SQUID配置在windows环境

作者:system 发布于:2012-2-21 18:59 分类:squid

squid for Windows的下载地址为: http://www.acmeconsulting.it/pagine/opensource/squid/SquidNT.htm

Squid for Windows的安装:下载的Squid for windows的程序文件,解压后会生成一个Squid的文件夹,将此文件夹拷贝到C:\,这个程序是免安装的,设置好配置文件即可运行使用(备注:Squid for windows的默认安装是在C:\squid下,当然,可以把Squid放到其他的路径,但是需要大量的配置squid配置文件中的路径信息,那样会比较麻烦)。

开始配置,打开:C:\squid\etc ,将squid.conf.default改名为:squid.conf,将mime.conf.default改名为mime.conf
用记事本对squid.conf(配置文件)进行编辑,修改squid的配置语句,文件中的#后的文本表示注释。
首先,找到TAG: acl段,这里是定义访问Squid的IP地址及其对应的名称
在此段acl Safe_ports port 777 #multiling http后增加一个新行,写 “acl 名称 src IP地址”

示例:acl name1 src 192.168.100.0 #定义所有来自192.168.100.*的机器对应的名称为name1

然后找到TAG: http_access段,这里是定义允许访问squid的列表
在此段http_access deny CONNECT !SSL_ports后增加一个新行,写“http_access allow/deny 名称”,allow表示允许访问,deny表示拒绝访问。

示例:http_access allow name1 #定义所有标识为name1(192.168.100.*)的机器允许访问squid代理服务器

并且在后面再增加一行 http_access deny all。

任何一个网络应用都会对应一个或N个端口,squid的默认端口是3128,如果要更改,找到 #http_port 3128 这里,删掉前面的#号,并且修改后面的端口号。

示例:http_port 7777 #将squid的服务端口改为7777

由于Squid是基于Cache(缓存)的代理服务器,所以设置缓存的大小对优化服务器的性能是有必要的,下面来看一下如何设置cache的大小。
找到#cache_mem 8 MB这句 删掉前面的#号 将默认的8修改到需要的大小,这里的数值应视具体的机器可用内存而定,应在内存允许的情况下尽量地设置的大一些以提高代理服务器性能,但不能让代理服务器的缓存大小影响本机器的性能。

示例:cache_mem 200 MB #设置squid使用200MB的内存当做代理服务器缓存

最后还要有一个步骤,否则在启动squid服务的时候会报错,那就是配置TAG: visible_hostname段,找到此段,再后面添加

visible_hostname 机器名(随便起) 这么一行,就搞定了。

示例:visible_hostname supersrv #将hostname设置为cpdnsserver

保存squid.conf并且退出文本编辑器了,简单的Squid for Windows的配置已经完成。

打命令行提示符(CMD),输入以下命令:
c:\>cd c:\squid\sbin
C:\squid\sbin>squid -i (注册Squid为Windows的服务,默认的服务名为SquidNT,可以使用“管理工具”中的“服务”来启动/停用服务)
C:\squid\sbin>squid -z (生成高速缓存的目录)
C:\squid\sbin>squid (启动squid服务,另一种比较好的方法是在“管理工具”,“服务”中选择SquidNT,然后选择启动服务)

以上简单说明了squid for Windows的安装,配置,启动,在Unix/Linux下的对Squid的简单配置也是可行的。

一些常用配置:

1、squid.conf配置

#squid.conf
#服务器IP 192.168.1.102
#监听服务器的80端口,透明代理,支持域名和IP的虚拟主机
http_port 192.168.1.102:80 vhost vport

#Squid信息设置
visible_hostname cdn.s.baidu.com
cache_mgr myname@139.com

#基本设置

cache_effective_user squid
cache_effective_group squid
tcp_recv_bufsize 65535 bytes
client_persistent_connections on
server_persistent_connections on
half_closed_clients off
persistent_request_timeout 30 second

#cache_access_log /usr/local/squid/var/logs/access.log
cache_log /usr/local/squid/var/logs/cache.log
cache_store_log /usr/local/squid/var/logs/store.log
cache_swap_log /usr/local/squid/var/logs/swap.log

logfile_rotate 3

acl AdminBoxes src 127.0.0.1 192.168.1.102
acl Purge method PURGE

http_access allow AdminBoxes Purge
http_access deny Purge

#设置Squid所能使用的内存共40MB,这个值因人而异,每次处理缓存大小为512MB,当缓存空间使用达到95%时新的内容将取代旧的而不直接添加到目录中,直到空间又下降到90%才停止这一活动
cache_mem 1024 MB
cache_swap_low 95
cache_swap_high 98

#最大缓存文件大小,超过这个值则不缓存,这个值因人而异,maximum_object_size_in_memory #装入内存缓存的文件大小,这个值对Squid的性能影响比较大,因为默认值是8K,超过8K的文件都不装入内存,而实际应用中很多网页和图片等都超过 8KB, 个人认为如果缓存不装入内存而存在磁盘上,性能和apache直接读取磁盘文件没什么区别,甚至不如直接访问apache,现在设置成小于4兆的文件通通装入内存缓存.
maximum_object_size 4096 KB
minimum_object_size 0 KB
maximum_object_size_in_memory 4096 KB
ipcache_size 1024
ipcache_low 90
ipcache_high 95
cache_replacement_policy lru
memory_replacement_policy lru

#max_filedesc 65535

#磁盘缓存的类型和目录,大小,一二级目录的设置,这里磁盘缓存大小是2048MB,都是 16*256 级子目录 /www/squid/cache 可以自定义
#cache_dir ufs /
cache_dir ufs /usr/local/squid/var/cache 2048 16 256

#限制同一IP客户端的最大连接数
#acl OverConnLimit maxconn 16
#http_access deny OverConnLimit

#防止天涯盗链,转嫁给百度
acl tianya referer_regex -i tianya
http_access deny tianya
deny_info http://www.baidu.com/logs.gif tianya

#防止被人利用为HTTP代理,设置允许访问的IP地址
acl myip dst 192.168.1.102
acl myip dst 192.168.1.103
acl myip dst 192.168.1.104
http_access deny !myip

#防止百度机器人爬死服务器
acl AntiBaidu req_header User-Agent Baiduspider
http_access deny AntiBaidu

#允许本地管理
acl Manager proto cache_object
acl Localhost src 127.0.0.1 192.168.1.102
http_access allow Manager Localhost
http_access deny Manager

#仅仅允许80端口的代理

acl all src 0.0.0.0/0.0.0.0
acl Safe_ports port 80 # http
http_access deny !Safe_ports
http_access allow all

#设置不想缓存的目录或者文件类型
acl QUERY urlpath_regex cgi-bin .php .cgi .avi .wmv .rm .ram .mpg .mpeg .zip .exe
cache deny QUERY

#2.6的反向代理加速配置
#代理到本机的80端口的服务,仅仅做为原始内容服务器
cache_peer 192.168.1.102 parent 81 0 no-query originserver name=sc102
cache_peer 192.168.1.103 parent 80 0 no-query originserver name=sc103
cache_peer 192.168.1.104 parent 81 0 no-query originserver name=sc104

cache_peer_domain sc102 parent 102.cpdns.com
cache_peer_domain sc103 parent 103.cpdns.com
cache_peer_domain sc104 parent 104.cpdns.com

#错误文档
#error_directory /usr/share/squid/errors/Simplify_Chinese
2、/etc/hosts配置
?View Code BASH
1
2
3
192.168.1.102 102.cpdns.com
192.168.1.103 103.cpdns.com
192.168.1.104 104.cpdns.com

squid 不缓存任何文件、

如果只是用squid做代理,不想缓存所有网站文件的话,可以修改squid配置

将squid.conf里的cache_dir ufs /home/cache 1024 16 256 改成cache_dir ufs /home/cache 1024 16 256 read-only

保存 然后,检查一下,有没有语法错误:
#squid -k parse
#squid -k reconfigure
操作完毕

squid中文操作指南
read-only
read-only选项指示Squid继续从cache_dir读取文件,但不往里面写新目标。它在squid.conf文件里看起来如下:
cache_dir ufs /cache0 7000 16 256 read-only
假如你想把cache文件从一个磁盘迁移到另一个磁盘,那么可使用该选项。如果你简单的增加一个cache_dir,并且删除另一个,squid的命中率会显著下降。在旧目录是read-only时,你仍能从那里获取cache命中。在一段时间后,就可以从配置文件里删除read-only缓存目录。

Powered by emlog