11/02/2006

Windows下设置squidnt代理服务器(2)

Windows下设置squidnt代理服务器(1) 文中,已经简单介绍了squidnt的安装步骤。这次以实验室的代理服务器为例,介绍一下squidnt的配置。我们实验室内部只有一个ip,使用Window xp操作系统,Winroute做nat和过滤ip服务,squidnt做缓存代理服务器。squidnt通过二级代理服务器,让局域网内用户可以自由访问!freeip的网络。

squidnt配置文件在 c:\squid\etc 目录下,进入到此目录,复制 squid.conf.default 为 squid.conf,复制 mime.conf.default 为 mime.conf。mime.conf 基本不需要配置,下面主要介绍 squid.conf 的配置。

squid.conf 配置非常复杂,这里仅介绍一些必要的配置,以免使用的时候出现错误。更详细的配置请查询官方文档

cache_peer 61.183.11.195 parent 8080 0 no-query

#第一为hostname。
#第二为type 有 “parent” “sibling” “multicast”。
#在web cache的阶层里,同一个cache level里以sibling称之,在上位者则为parent,不过在整个 cache level中并没有很明显的分层,所以每一台主机有可能是sibling 或是 parent。当server收到request时,先对所有的sibling和parent送出ICP去询问,等待回应开始对第一个回应HIT的cache抓object,如没有人回覆HIT,就对先回覆 MISS的parent开始抓取,找到资料後送给host并自己cache起来,若都失败server便乖乖的自己去source抓取资料。
#第三为proxy_port 为cache主机的porxy port。
#第四为icp_port cache主机接收icp的port,通常为3130。此处为0。
#第五为option 有proxy-only、weight=n、ttl=n、no-query、default、round-robin、 multicast-responder等。当proxy server的储存空间很少时,可加上proxy-only,server便不会把资料 cache住,直接将资料送往client。Weight值为与parent间的依赖性,值越大依赖性越大,预设值为1。

http_port 8021
visible_hostname jiangzhanyong
cache_mgr jiangzhanyong
dns_nameservers 202.118.224.101
#以上四项分别为:
#代理服务器端口
#代理服务器名字,随便写
#代理服务器管理员email,随便写
#dns服务器

cache_store_log none
cache_log none
emulate_httpd_log off
cache_access_log c:/squid/var/logs/access.log
#以上为日志相关选项,如果你感希望分析日志,都可以记录下来,这里只是保留了最基本的登陆日志。

logfile_rotate 15
#logfile_rotate指定的数字即为打包并备份的文件的数量,当达到这一数目时,squid将删除最老的备份文件。默认值为1 0。如果想手动来进行这些操作,可以用logfile_rotate 0来取消自动操作。

cache_dir ufs c:/squid/var/cache 200 16 256
#缓存目录,大小(兆),第一级子目录个数 第二级子目录个数缓存大小可以依照自己随便设;不过一般的机器设为512M或者更小好点,IDE硬盘寻道比较慢,如果缓存做的过于巨大,对性能会有负面影响。

cache_swap_low 80
cache_swap_high 95
#在这里,squid会用c:/squid/var/cache目录作为保存缓存数据的目录,每次处理的缓存大小是32兆字节,当缓存空间使用达到95%时,新的内容将取代旧的而不直接添加到目录中,直到空间又下降到80%才停止这一活动。

cache_mem 40 MB
#内存使用,建议为内存的1/3

maximum_object_size 4096 KB
#大于该值得对象将不被存储。如果要提高访问速度,就降低该值;如果想最大限度的节约带宽,降低成本,就增加该值。

acl all src 0.0.0.0
acl X myport 8021
acl freeip dst "c:/squid/etc/freeip.txt"
acl allowin src "c:/squid/etc/allowin.txt"
acl conncount maxconn 20
#以上几项分别设定:
#设定 X 指代 8021端口
#freeip列表的文件位置
#允许使用代理的 ip 的文件位置
#单个ip最多允许的连接数

acl ports port 8880-8889
acl ports port 6881-6889
acl ports port 4660-4666
acl ports port 16881 18993 7089
acl ports port 46600-46699
acl ports port 7778 6969 6979
#说实话,没有看明白这些端口的意义,下面的规则禁止了访问这些端口

icp_port 0
#参数指定Squid从邻居(neighbour)服务器缓冲内发送和接收ICP请求的端口号。这里设置为0是因为这里配置Squid为内部Web服务器的加速器,所以不需要使用邻居服务器的缓冲。

half_closed_clients off
#half_closed_clients 参数貌似指定是否断开半关闭的客户端连接。

nonhierarchical_direct on
#By default, Squid sends any non-hierarchical requests (matching hierarchy_stoplist or not cachable request type) directly to origin servers. If you turn nonhierarchical_direct off, Squid will prefer to send these requests to neighbors.

forwarded_for off
#关闭此项将在访问某些论坛时显示的IP是unknown,
#如果打开则显示的是你client的内网IP

always_direct allow freeip X
never_direct allow !freeip X
http_access deny !allowin X
http_access deny ports all X
http_access allow all X
#最为关键的访问规则:X指代8021端口
#访问freeip,则直接访问
#访问!freeip,则不允许直接访问
#不允许allowin之外的ip访问
#不允许访问port列表内的端口
#其他的都允许访问


至此,squid.conf基本配置完毕。

参考资料:
本文主要参考了BBS紫丁香站网友mxmgy两篇对squidnt的介绍12,和网友jdg的squidnt配置。此外,还参考了 Squid Proxy Server基础入门用Squid构建高速的Proxy ServerLinux下Squid代理服务器的架设与维护(一)Linux下Squid代理服务器的架设与维护(二)等网络文章。

0 Comments: