2022年代理服务器的配置与应用 .pdf
1 代理服务器的配置与应用第一节 代理服务器概述1.1 什么是代理服务器在 TCP/IP 网络中,传统的通信过程是这样的:客户端向服务器请求数据,服务器响应该请求,将数据传送给客户端。在引入了代理服务器以后,这一过程变成了这样:客户端向服务器发起请求,该请求被送到代理服务器;代理服务器分析该请求,先查看自己缓存中是否有请求数据,如果有就直接传送给客户端,如果没有就代替客户端向该服务器发出请求。服务器响应以后,代理服务器将响应的数据传送给客户端,同时在自己的缓存中保留一份该数据的拷贝。这样,再有客户端请求相同的数据时,代理服务器就可以直接将数据传送给客户端,而不需要再向该服务器发起请求。1.2 代理服务器的功能一般说来,代理服务器具有以下的功能:1.通过缓存增加访问速度随着 Internet 的迅猛发展,网络带宽变得越来越珍贵。所以为了提高访问速度,好多ISP 都提供代理服务器, 通过代理服务器的缓存功能来加快网络的访问速度。一般说来, 大多数的代理服务器都支持HTTP缓存,但是,有的代理服务器也支持FTP 缓存。在选择代理服务器时,对于大多数的组织,只需要HTTP缓存功能就足够了。通常,缓存有主动缓存被动缓存之分。所谓被动缓存,指的是代理服务器只在客户端请求数据时才将服务器返回的数据进行缓存,如果数据过期了,又有客户端请求相同数据时,代理服务器又必须重新发起新的数据请求,在将响应数据传送给客户端时又进行新的缓存。所谓主动缓存,就是代理服务器不断地检查缓存中的数据,一旦有数据过期,则代理服务器主动发起新的数据请求来更新数据。这样,当有客户端请求该数据时就会大大缩短响应时间。还需要说明的是,对于数据中的认证信息,大多数的代理服务器都不会进行缓存的。2.提供用私有IP 访问 Internet 的方法IP 地址是不可再生的宝贵资源,假如你只有有限的IP 地址, 但是需要提供整个组织的Internet 访问能力,那么,你可以通过使用代理服务器来实现这一点。3.提高网络的安全性这一点是很明显的,如果内部用户访问Internet 都是通过代理服务器,那么,代理服务器就成为进入Internet 的唯一通道; 反过来说, 代理服务器也是Internet 访问内部网的唯一通道,如果你没有做反向代理,则对于 Internet 上的主机来说,你的整个内部网只有代理服务器是可见的,从而大大增强了网络的安全性。1.3 代理服务器的分类及特点通常的代理服务器分类方法,是从实现的机理分为线路层代理、应用层代理、智能线路层代理等等。在这里,我想从另外一个角度出发,把代理服务器分为传统代理服务器和透明代理服务器。我认为有必要好好搞清楚两者的区别,只有真正明白了内在地机理,才能在遇到问题时,有章可循,才不会一头雾水,不知从何解决问题。因此,下面我们就通过具体的实例来说明。本章的写作思路来源于Paul Russell 所写的 IPCHAINS-HOWTO。下面所举的例子也来源于该文章,我觉得我读该文的最大收获在于对内部网访问外部网以及外部网访问内部网的实现手段有了一个清晰的认识。当然,这里所谓的内部网是指使用私有IP 的内部网络。我们的例子都基于以下假设:你的域名为,你的内部网 (192.168.1.*) 用户通过( 外部接口eth0:1.2.3.4;内部接口eth1:192.168.1.1)的代理服务器访问Internet,换句话说,该代理服务器是唯一一台直接与Internet和内部网相连的机器。并假该设代理服务器上运行着某种代理服务器软件(如squid)。假设内部网中某一客户机为(192.168.1.100) 。+-+ 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 15 页 - - - - - - - - - 2 |内部网 (192.168.1.*)| eth1+-+eth0 DDN | +-| proxy |Internet |client198.168.1.100| +-+ +-+ eth0: 1.2.3.4 eth1: 198.168.1.1 1.3.1 传统代理在以上基础上我们做以下工作:1.代理服务软件被绑定到代理服务器的8080 端口。2.客户端浏览器被配置使用代理服务器的8080 端口。3.客户端不需要配置DNS。4.代理服务器上需要配置代理服务器。5.客户端不需要配置缺省路由。当我们在客户端浏览器中打开一个web 请求,比如“http:/” ,这时将陆续发生以下事件:1. 客 户 端 使 用 某 一 端 口 ( 比 如1025) 连 接 代 理 服 务 器8080端 口 , 请 求web页 面“http:/”2.代理服务器向DNS 请求“ ”,得到相应的IP 地址 202.99.11.120。然后,代理服务器使用某一端口(比如1037)向该 IP 地址的 80 端口发起web 连接请求,请求web 页面。3.收到响应的web 页面后,代理服务器把该数据传送给客户端。4.客户端浏览器显示该页面。从 的角度看来,连接是在1.2.3.4 地 1037 端口和 202.99.11.120 的 80 端口之间建立的。从client 的角度看来,连接是在192.168.1.100 的 1025 端口和 1.2.3.4 的 8080 端口之间建立的。1.3.2 透明代理透明代理的意思是客户端根本不需要知道有代理服务器的存在。在以上基础上我们做以下工作:1.配置透明代理服务器软件运行在代理服务器的8080 端口。2.配置代理服务器将所有对80 端口的连接重定向到8080 端口。3.配置客户端浏览器直接连解到Internet。4.在客户端配置好DNS. 5.配置客户端的缺省网关为192.168.1.1. 当我们在客户端浏览器中打开一个web 请求,比如“http:/” ,这时将陆续发生以下事件:1.客户端向DNS 请求“ ”,得到相应的IP 地址 202.99.11.120。然后,客户端使用某一端口(比如1066)向该 IP 地址的 80 端口发起 web 连接请求,请求web 页面。2.当该请求包通过透明代理服务器时,被重定向到代理服务器的绑定端口8080。于是,透明代理服务器用某一端口(比如1088)向 202.99.11.120 的 80 端口发起 web 连接请求,请求web 页面。3.收到响应的web 页面后,代理服务器把该数据传送给客户端。4.客户端浏览器显示该页面。从 的角度看来,连接是在1.2.3.4 地 1088 端口和 202.99.11.120 的 80 端口之间建立的。从client 的角度看来,连接是在192.168.1.100 的 1066 端口和 202.99.11.120 的 80 端口之间建立的。以上就是传统代理服务器和透明代理服务器的区别所在。第二节 各种代理服务器的比较linux 下的代理服务器软件很多,我从( 一个著名的linux 软件站点)查看了一下,足有六十多个。但是被广泛应用的只有Apache、socks、squid 等几个实践证明是高性能的代理软件。下面名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 15 页 - - - - - - - - - 3 我们分别来比较一下这几个软件:2.1 Apache Apache 是世界上用的最广泛的HTTP 服务器,之所以用的最广泛,是因为它强大的功能、高效率、安全性和速度。 从 1.1.x 版本开始, Apache 开始包含了一个代理模块。用 Apache 作代理服务器的性能优势并不明显,不建议使用。2.2 Socks Socks 是一种网络代理协议,该协议可以让客户机通过Socks 服务器获得对Internet 的完全访问能力。Scoks 在服务器和客户端之间建立一个安全的代理数据通道,从客户的角度看来,Scoks 是透明的; 从服务器的角度看来,Socks 就是客户端。客户端不需要具有对Internet 的直接访问能力(也就是说,可以使用私有 IP 地址) ,因为 Socks 服务器能够把来自于客户端的连接请求重定向到Internet。此外, Socks 服务器可以对用户连接请求进行认证,允许合法用户建立代理连接。同理, Socks 也能防止非授权的Internet 用户访问及的内部网络。所以常常把Socks 当作防火墙来使用。常见的浏览器如netscape、 IE 等可以直接使用Socks, 并且我们也可以使用socsk5 的所带的 client 来使那些不直接支持socks 的 internet 软件使用 Socks。更多的资料可以参考Socks 官方站点 http:/ 。2.3 Squid 对于 web 用户来说, Squid 是一个高性能的代理缓存服务器,Squid 支持 FTP、 gopher和 HTTP 协议。和一般的代理缓存软件不同,Squid 用一个单独的、 非模块化的、 I/O 驱动的进程来处理所有的客户端请求。Squid 将数据元缓存在内存中,同时也缓存DNS 查询的结果,除此之外,它还支持非模块化的DNS 查询,对失败的请求进行消极缓存。Squid 支持 SSL,支持访问控制。由于使用了ICP(轻量 Internet 缓存协议),Squid 能够实现层叠的代理阵列,从而最大限度地节约带宽。Squid 由一个主要的服务程序squid,一个 DNS 查询程序dnsserver,几个重写请求和执行认证的程序,以及几个管理工具组成。当Squid 启动以后,它可以派生出预先指定数目的dnsserver 进程,而每一个dnsserver 进程都可以执行单独的DNS 查询,这样一来就大大减少了服务器等待DNS 查询的时间。2.4 选择从上面的比较可以看出,Apache 主要功能是web 服务器,代理功能只不过是其一个模块而已,Socks虽然强大,但有欠灵活,因此我们着重推荐你使用Squid。下面的章节我们就一起来学习Squid 激动人心的特性及相关的安装与配置。第三节 安装 Squid Proxy Server 3.1 获取软件你可以通过以下途径获取该软件:1.从 Squid 的官方站点http:/www.squid-cache.org 下载该软件;2.从你的 linux 发行版本中获取该软件;通常, Squid 软件包有两种:一种是源代码,下载后需要自己重新编译;可执行文件,下载后只需解压就可以使用;另一种是就是RedHat 所使用的rpm 包。下面我们分别讲讲这两种软件包的安装方法。3.2 安装软件我们以目前最新的稳定版本squid-2.3.STABLEX为例。3.2.1rpm 包的安装1.进入 /mnt/cdrom/RedHat/RPMS 2.执行 rpm -ivh squid-2.2.STABLE4-8.i386.rpm。当然,我们也可以在开始安装系统的过程中安装该软件。3.2.2 源代码包的安装1.从 http:/www.squid-cache.org 下载 squid-2.3.STABLE2-src.tar.gz 。2.将该文件拷贝到/usr/local 目录。3.解开该文件tar xvzf squid-2.3.STABLE2-src.tar.gz 。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 15 页 - - - - - - - - - 4 4.解开后,在 /usr/local 生成一个新的目录squid-2.3.STABLE2 ,为了方便用mv 命令将该目录重命名为 squid mv squid-2.3.STABLE2 squid; 5.进入 squid cd squid 6.执行 ./configure 可以用 ./confgure -prefix=/directory/you/want指定安装目录系统缺省安装目录为/usr/local/squid 。7.执行make all 8.执行make install 9.安装结束后,squid 的可执行文件在安装目录的bin 子目录下,配置文件在etc 子目录下。第四节 配置 squid 基础篇让代理服务器跑起来由于 RedHat各方面的优势(包括易用性,稳定性等等),全世界范围内使用该发行版的用户比较多,所以, 我们下面的说明都是以RedHat6.1 环境下 squid-2.2.STABLE4-8 版本为主。 从我的使用经验看来,该版本的 squid 要比其他版本稳定的多,以前的 1.1.22 版本也比较稳定,但是在功能及灵活性方面有所欠缺。squid 有一个主要的配置文件squid.conf,在 RedHat 环境下所有squid 的配置文件位于/etc/squid 子目录下。4.1 常用的配置选项因为缺省的配置文件有问题,所以我们必须首先修改该配置文件的有关内容,以便让 squid 跑起来。下面我们来看一看squid.conf 文件的结构以及一些常用的选项:squid.conf 配置文件的可以分为十三个部分,这十三个部分分别是:1.NETWORK OPTIONS (有关的网络选项)2.OPTIONS WHICH AFFECT THE NEIGHBOR SELECTION ALGORITHM (作用于邻居选择算法的有关选项)3.OPTIONS WHICH AFFECT THE CACHE SIZE (定义 cache大小的有关选项)4.LOGFILE PATHNAMES AND CACHE DIRECTORIES (定义日志文件的路径及cache 的目录 ) 5.OPTIONS FOR EXTERNAL SUPPORT PROGRAMS (外部支持程序选项)6.OPTIONS FOR TUNING THE CACHE (调整 cache的选项)7.TIMEOUTS (超时)8.ACCESS CONTROLS (访问控制)9.ADMINISTRA TIVE PARAMETERS (管理参数)10.OPTIONS FOR THE CACHE REGISTRATION SERVICE (cache 注册服务选项)11.HTTPD-ACCELERA TOR OPTIONS (HTTPD 加速选项)12.MISCELLANEOUS (杂项)13.DELAY POOL PARAMETERS (延时池参数)虽然 squid 的配置文件很庞大,但是如果你只是为一个中小型网络提供代理服务,并且只准备使用一台服务器,那么,你只需要修改配置文件中的几个选项。这些几个常用选项分别是:1.http_port 说明:定义 squid 监听 HTTP 客户连接请求的端口。缺省是 3128, 如果使用HTTPD 加速模式则为 80。你可以指定多个端口,但是所有指定的端口都必须在一条命令行上。2.cache_mem (bytes) 说明:该选项用于指定squid 可以使用的内存的理想值。这部分内存被用来存储以下对象:In-Transit objects (传入的对象)Hot Objects (热对象,即用户常访问的对象)Negative-Cached objects (消极存储的对象)需要注意的是,这并没有指明squid 所使用的内存一定不能超过该值,其实,该选项只定义了 squid所使用的内存的一个方面,squid 还在其他方面使用内存。所以squid 实际使用的内存可能超过该值。缺省值为 8MB。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 15 页 - - - - - - - - - 5 3.cache_dir Directory-Name Mbytes Level-1 Level2 说明:指定squid 用来存储对象的交换空间的大小及其目录结构。可以用多个cache_dir 命令来定义多个这样的交换空间,并且这些交换空间可以分布不同的磁盘分区。directory 指明了该交换空间的顶级目录。如果你想用整个磁盘来作为交换空间,那么你可以将该目录作为装载点将整个磁盘mount 上去。缺省值为 /var/spool/squid。 “Mbytes”定义了可用的空间总量。需要注意的是,squid 进程必须拥有对该目录的读写权力。“Level-1”是可以在该顶级目录下建立的第一级子目录的数目,缺省值为16。同理,“ Level-2”是可以建立的第二级子目录的数目,缺省值为256。为什么要定义这么多子目录呢?这是因为如果子目录太少,则存储在一个子目录下的文件数目将大大增加,这也会导致系统寻找某一个文件的时间大大增加,从而使系统的整体性能急剧降低。所以,为了减少每个目录下的文件数量,我们必须增加所使用的目录的数量。如果仅仅使用一级子目录则顶级目录下的子目录数目太大了,所以我们使用两级子目录结构。那么,怎么来确定你的系统所需要的子目录数目呢?我们可以用下面的公式来估算。已知量:DS = 可用交换空间总量(单位KB) / 交换空间数目OS = 平均每个对象的大小= 20k NO = 平均每个二级子目录所存储的对象数目= 256 未知量:L1 = 一级子目录的数量L2 = 二级子目录的数量计算公式:L1 x L2 = DS / OS / NO 注意这是个不定方程,可以有多个解。4.acl 说明:定义访问控制列表。定义语法为:acl aclname acltype string1 . acl aclname acltype file . 当使用文件时,该文件的格式为每行包含一个条目。acltype 可以是src dst srcdomain dstdomain url_pattern urlpath_pattern time port proto method browser user 中的一种。分别说明如下:src 指明源地址。可以用以下的方法指定:acl aclname src ip-address/netmask . (客户 ip 地址 ) acl aclname src addr1-addr2/netmask . ( 地址范围 ) dst 指明目标地址。语法为:acl aclname dst ip-address/netmask . (即客户请求的服务器的ip 地址 ) srcdomain 指明客户所属的域。语法为:acl aclname srcdomain . squid 将根据客户ip 反向查询DNS。dstdomain 指明请求服务器所属的域。语法为:acl aclname dstdomain . 由客户请求的URL 决定。注意, 如果用户使用服务器ip 而非完整的域名时,squid 将进行反向的DNS 解析来确定其完整域名,如果失败就记录为“none” 。time 指明访问时间。语法如下:acl aclname time day-abbrevs h1:m1-h2:m2hh:mm-hh:mm day-abbrevs: S - Sunday M - Monday 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 15 页 - - - - - - - - - 6 T - Tuesday W - Wednesday H - Thursday F - Friday A - Saturday h1:m1 必须小于h2:m2,表达示为 hh:mm-hh:mm 。port 指定访问端口。可以指定多个端口,比如:acl aclname port 80 70 21 . acl aclname port 0-1024 . (指定一个端口范围)proto 指定使用协议。可以指定多个协议:acl aclname proto HTTP FTP . method 指定请求方法。比如:acl aclname method GET POST . 5.http_access 说明:根据访问控制列表允许或禁止某一类用户访问。如果某个访问没有相符合的项目,则缺省为应用最后一条项目的“非”。比如最后一条为允许,则缺省就是禁止。所以,通常应该把最后的条目设为deny all 或allow all 来避免安全性隐患。4.2 应用实例假想情景:某公司用squid 作代理服务器,该代理服务器配置为PII450/256M/8.4G ,公司所用ip 段为1.2.3.0/24, 并且想用 8080 作为代理端口。则相应的squid 配置选项为:1.http_port http_port 8080 2.cache_mem 思路:由于该服务器只提供代理服务,所以该值可以尽量设得大一些。cache_mem 194M 3.cache_dir Directory-Name Mbytes Level-1 Level2 思路:硬盘为8.4G 的,在安装系统时应该做好规划,为不同的文件系统划分可用空间。在本例中,我们可以这样来划分:/cache1 3.5G /cache2 3.5G /var 400M swap 127M / 剩余部分并且,在安装时,我们尽量不安装不必要的包。这样在节约空间的同时可以提高系统的安全性和稳定性。下面我们来计算所需的第一级和第二级子目录数。已知量:DS = 可用交换空间总量(单位KB) / 交换空间数目7G/2=3500000KB OS = 平均每个对象的大小= 20k NO = 平均每个二级子目录所存储的对象数目= 256 未知量:L1 = 一级子目录的数量L2 = 二级子目录的数量计算公式:L1 x L2 = DS / OS / NO 3500000/20/256=684 我们取名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 15 页 - - - - - - - - - 7 L1=16 L2=43 所以,我们的cache_dir 语句为:cache_dir /cache1 3500M 16 43 cache_dir /cache2 3500M 16 43 4.acl 思路:通过src 来定义 acl. acl allow_ip src 1.2.3.4/255.255.255.0 5.http_access http_access allow allow_ip 4.3 启动、停止squid。配置并保存好squid.conf 后,可以用以下命令启动squid。squid 或者,使用RedHat 的启动脚本来启动squid. /etc/rc.d/init.d/squid start 同样地,你也可以用下列脚本停止运行squid 或重启动 squid. /etc/rc.d/init.d/squid stop /etc/rc.d/init.d/squid restart 第五节 根据需求配置你的squid 进阶篇5.1 其它配置选项在进行squid 的一些高级应用之前,我们有必要对其他有用的配置选项作一个全面的了解。下面我们分类来讲一讲这些选项,用于某些特殊应用的选项我们将放在讲该种应用时来讲。5.1.1 网络选项1.tcp_incoming_address tcp_outgoing_address udp_incoming_address udp_outgoing_address 说明:tcp_incoming_address 指定监听来自客户或其他squid 代理服务器的绑定ip 地址;tcp_outgoing_address 指定向远程服务器或其他squid 代理服务器发起连接的ip 地址udp_incoming_address为ICP套 接 字 指 定 接 收 来 自 其 他squid代 理 服 务 器 的 包 的ip地 址udp_outgoing_address 为 ICP 套接字指定向其他squid 代理服务器发送包的ip 地址;缺省为没有绑定任何ip 地址。该绑定地址可以用ip 指定,也可以用完整的域名指定。5.1.2 交换空间设定选项1.cache_swap_low (percent, 0-100) cache_swap_high (percent, 0-100) 说明: squid 使用大量的交换空间来存储对象。那么,过了一定的时间以后,该交换空间就会用完,所以还必须定期的按照某种指标来将低于某个水平线的对象清除。squid 使用所谓的“最近最少使用算法”(LRU)来做这一工作。当已使用的交换空间达到cache_swap_high 时, squid 就根据LRU 所计算的得到每个对象的值将低于某个水平线的对象清除。这种清除工作一直进行直到已用空间达到cache_swap_low。这两个值用百分比表示,如果你所使用的交换空间很大的话,建议你减少这两个值得差距,因为这时一个百分点就可能是几百兆空间,这势必影响squid 的性能。缺省为:cache_swap_low 90 cache_swap_high 95 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 15 页 - - - - - - - - - 8 2.maximum_object_size 说明:大于该值得对象将不被存储。如果你想要提高访问速度,就请降低该值;如果你想最大限度地节约带宽,降低成本,请增加该值。单位为K,缺省值为:maximum_object_size 4096 KB 5.1.3 有关日志的选项1.cache_access_log 说明:指定客户请求记录日志的完整路径(包括文件的名称及所在的目录),该请求可以是来自一般用户的 HTTP 请求或来自邻居的ICP 请求。缺省值为:cache_access_log /var/log/squid/access.log 如果你不需要该日志,可以用以下语句取消:cache_access_log none 2.cache_store_log 说明:指定对象存储记录日志的完整路径(包括文件的名称及所在的目录)。该记录表明哪些对象被写到交换空间,哪些对象被从交换空间清除。缺省路径为:cache_log /var/log/squid/cache.log 如果你不需要该日志,可以用以下语句取消:cache_store_log none 3.cache_log 说明:指定squid 一般信息日志的完整路径(包括文件的名称及所在的目录)。缺省路径为: cache_log /var/log/squid/cache.log 4.cache_swap_log 说明:该选项指明每个交换空间的“swap.log”日志的完整路径(包括文件的名称及所在的目录)。该日志文件包含了存储在交换空间里的对象的元数据(metadata) 。通常,系统将该文件自动保存在第一个“cache_dir”说定义的顶级目录里,但是你也可以指定其他的路径。如果你定义了多个“cache_dir” ,则相应的日志文件可能是这样的:cache_swap_log.00 cache_swap_log.01 cache_swap_log.02 后面的数字扩展名与指定的多个“cache_dir”一一对应。需要注意的是,最好不要删除这类日志文件,否则squid 将不能正常工作。5.pid_filename 说明:指定记录squid 进程号的日志的完整路径(包括文件的名称及所在的目录)。缺省路径为pid_filename /var/run/squid.pid 如果你不需要该文件,可以用以下语句取消:pid_filename none 6.debug_options 说明:控制作日志时记录信息的多寡。可以从两个方面控制:section 控制从几个方面作记录;level控制每个方面的记录的详细程度。推荐的方式(也是缺省方式)是:debug_options ALL,1 即,对每个方面都作记录,但详细程度为1(最低 )。7.log_fqdn on|off 说明:控制在access.log 中对用户地址的记录方式。打开该选项时,squid 记录客户的完整域名,取消该选项时, squid 记录客户的ip 地址。 注意, 如果打开该选项会增加系统的负担,因为 squid 还得进行客户 ip 的 DNS 查询。缺省值为:log_fqdn off 5.1.4 有关外部支持程序的选项1.ftp_user 说明: 设置登录匿名ftp 服务器时的提供的电子邮件地址,登录匿名 ftp 服务器时要求用你的电子邮件地址作为登录口令(更多的信息请参看本书的相关章节)。需要注意的是,有的匿名ftp 服务器对这一点要求很苛刻,有的甚至会检查你的电子邮件的有效性。缺省值为:ftp_user Squid 2.ftp_list_width 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 15 页 - - - - - - - - - 9 说明:设置ftp 列表的宽度,如果设得太小将不能的浏览到长文件名。缺省值为:ftp_list_width 32 3.cache_dns_program 说明:指定DNS 查询程序的完整路径(包括文件的名称及所在的目录)。缺省路径为:cache_dns_program /usr/lib/squid/dnsserver 4.dns_children 说明:设置DNS 查询程序的进程数。对于大型的登录服务器系统,建议该值至少为10。最大值可以是 32,缺省设置为5 个。注意,如果你任意的降低该值,可能会使系统性能急剧降低,因为squid 主进程要等待域名查询的结果。没有必要减少该值,因为DNS 查询进程并不会消耗太多的系统的资源。5.dns_nameservers 说明:指定一个DNS 服务器列表,强制squid 使用该列表中的DNS 服务器而非使用/etc/resolv.conf 文件中定义的DNS 服务器。你可以这样指定多个DNS 服务器: dns_nameservers 10.0.0.1 192.172.0.4 缺省设置为:dns_nameservers none 6.unlinkd_program 说明:指定文件删除进程的完整路径。缺省设置为:unlinkd_program /usr/lib/squid/unlinkd 7.pinger_program 说明:指定ping 进程的完整路径。该进程被squid 利用来测量与其他邻居的路由距离。该选项只在你启用了该功能时有用。缺省为:pinger_program /usr/lib/squid/pinger 8.authenticate_program 说明:指定用来进行用户认证的外部程序的完整路径。squid 的用户认证功能我们将在后面的章节讲述。缺省设置为不认证。5.1.5 用户访问控制选项1.request_size (KB) 说明: 设置用户请求通讯量的最大允许值(单位为 KB)。如果用户用POST 方法请求时, 应该设一个较大的值。缺省设置为:request_size 100 KB 2.reference_age 说明: squid 根据对象的LRU(最近最少使用算法)来清除对象,squid 依据使用磁盘空间的总量动态地计算对象的LRU 年龄。我们用reference_age 定义对象的最大LRU 年龄。如果一个对象在指定的reference_age 内没有被访问, squid 将删除该对象。 缺省值为一个月。 你可以使用如下所示的时间表示方法。1 week 3.5 days 4 months 2.2 hours 3.quick_abort_min (KB) quick_abort_max (KB) quick_abort_pct (percent) 说明:控制squid 是否继续传输被用户中断的请求。当用户中断请求时,squid 将检测quick_abort 的值。如果剩余部分小于“quick_abort_min ”指定的值 ,squid 将继续完成剩余部分的传输;如果剩余部分大于“ quick_abort_max ”指定的值 ,squid 将终止剩余部分的传输;如果已完成“quick_abort_pct ”指定的百分比, squid 将继续完成剩余部分的传输。缺省的设置为:quick_abort_min 16 KB quick_abort_max 16 KB quick_abort_pct 95 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 15 页 - - - - - - - - - 10 5.1.6 各类超时设置选项1.negative_ttl time-units 说明:设置消极存储对象的生存时间。所谓的消极存储对象,就是诸如 “连接失败” 及404 Not Found等一类错误信息。缺省设置为:negative_ttl 5 minutes2.positive_dns_ttl time-units 说明:设置缓存成功的DNS 查询结果的生存时间。缺省为6 小时。positive_dns_ttl 6 hours 3.negative_dns_ttl time-units 说明:设置缓存失败的DNS 查询结果的生存时间。缺省为5 分钟。negative_dns_ttl 5 minutes 4.connect_timeout time-units 说明:设置squid 等待连接完成的超时值。缺省值为2 分钟。connect_timeout 120 seconds 5.read_timeout time-units 说明:如果在指定的时间内squid 尚未从被请求的服务器读入任何数据,则squid 将终止该客户请求。缺省值为15 分钟。read_timeout 15 minutes 6.request_timeout 说明:设置在建立与客户的连接后,squid 将花多长时间等待客户发出HTTP 请求。缺省值为30 秒。request_timeout 30 seconds 7.client_lifetime time-units 说明:设置客户在与squid 建立连接后,可以将该连接保持多长时间。注意,因为客户建立的每个连接都会消耗一定的系统资源,所以如果你是为一个大型网络提供代理服务的话,一定要正确地修改该值。因为如果同一时间的连接数量太大的话,可能会消耗大量的系统资源,从而导致服务器宕机。缺省值为1 天,该值太大了,建议根据你自己的情况适当减小该值。client_lifetime 1 day 8.half_closed_clients on/off 说明:有时候由于用户的不正常操作,可能会使与squid 的 TCP 连接处于半关闭状态,这时候,该TCP 连接的发送端已经关闭,而接收端正常工作。缺省地,squid 将一直保持这种处于半关闭状态的 TCP 连接,直到返回套接字的读写错误才将其关闭。如果将该值设为off,则一旦从客户端返回“no more data to read”的信息, squid 就立即关闭该连接。half_closed_clients on 9.pconn_timeout 说明:设置squid 在与其他服务器和代理建立连接后,该连接闲置多长时间后被关闭。缺