开源中文网

您的位置: 首页 > Linux应用 > squid > 正文

Squid 服务器的配置

来源:  作者:

作者:liheng 

Email:liheng_2006@hotmail.com 

OS:RedHat Enterprise linux 4 内核:2.6.9-11.EL Squid 版本:squid-2.6.STABLE9.tar.gz 

Squid server ip address : eth0: 192.168.0.251 

Client : windows 2000 professional ip address:192.168.1.120 

Client: windows xp pro ip address:192.168.0.145 

一、安装 Squid 

# groupadd squid 

# useradd –g squid squid 

添加 squid 组和用户,如果系统内置有,可以免却这一步,可以到 /etc/group & /etc/passwd 中查看。 

解压 SQUID 

# tar xzvf /root/ squid-2.6.STABLE9.tar.gz 

# cd squid-2.6.STABLE9 

# ./configure -–prefix=/usr/local/squid \ 

Ø --enable-gnuregex –enable-async-io=120 –enable-icmp \ 

Ø --enable-kill-parent-hack --enable-snmp \ 

Ø --enable-ident-lookups –enable-cahce-digests \ 

Ø --enable-err-language=”simplify_Chinese” \ --enable-default-err-languages=”Simplify_Chinese” \ 

Ø --enable-poll –enable-linux-netfilter –enable-arp-acl 

/*参数设置解释= = = = = = = = = = = = = = = = = = = = = = == = = = = = = = == = == = = = = = 

--prefix=/usr/local/squid :指定软件的安装路径 
--enable-gnuregex :由于Squid大量使用字符串处理做各种判断,加入此项能更好的处理。 
--enable-async-io=80 :这个主要是设置async模式来运行squid,我的理解是设置用线程来运行squid,如果服务器配置很不错,有1G以上内存,cpu使用SMP的方式的话可以考虑设成160或者更高。如果服务器比较糟糕就根据实际情况设了。另外此项还另cache文件支持aufs 
--enable-icmp :加入icmp支持 
--enable-kill-parent-hack :关掉suqid的时候,要不要连同父进程一起关掉,这个当然要啦 
--enable-snmp :此选项可以让MRTG使用SNMP协议对服务器的流量状态进行监测,因此必须选择此项,使Squid支持SNMP接口。 
--disable-ident-lookups :防止系统使用RFC931规定的身份识别方法。 
--enable-cahce-digests :加快请求时,检索缓存内容的速度。 
--enable-arp-acl :可以在规则设置中直接通过客户端的MAC地址进行管理,防止客户使用IP欺骗。 
--enable-err-language="Simplify_Chinese" 和 
--enable-default-err-languages="Simplify_Chinese" :指定出错是显示的错误页面为简体中文 
--enable-poll :应启用Poll()函数而不是select()函数,通常而言poll(轮询)比select要好,但configure(脚本程序)已知Poll在某些平台下失效, 若你认为你比configure编译配置脚本程序要聪明的话,可以用这个选项启用Poll。总之就是用这个可以提升性能就是啦。 
--enable-linux-netfilter :可以支持透明代理 

================================================*/ 

# make 

# make install 

修改 Squid 的配置文件 squid.conf 

# vi /usr/local/squid/etc/squid.conf 

http_port 3128 /*在第89行处*/ 

#默认情况下,公认的标准 PROXY 端口为3128 

#禁止缓存 
hierarchy_stoplist cgi-bin ? /*在第729行处*/ 
hierarchy_stoplist -i ^https:\\ ? /*在第730行处*/ 
acl QUERY urlpath_regex -i cgi-bin \? \.asp \.php \.jsp \.cgi /*在第741行处*/ 
acl denyssl urlpath_regex -i ^https:\\ /*在第742行处*/ 
no_cache deny QUERY /*在第743行处*/ 
no_cache deny denyssl /*在第744行处*/ 
#上面几个就是说遇到URL中有包含cgi-bin和以https:\\开头的都不要缓存, 
#还有asp、cgi、php等动态脚本也不要缓存, 
#因为这些脚本通常都是动态更新的,这样数据不同步。 
#还有https://开通的不缓存是因为一般我们进行电子商务交易, 
#例如银行付款等都是采用这个的,如果把信用卡号什么缓存那不是很危险。 

cache_mem 24 MB /*在第800行处*/ 

#额外使用内存量,可根据你的系统内存在设定,一般为实际内存的1/3,默认是8MB 

cache_swap_low 90 /*在第817行处*/ 

#最低缓存百分比 
cache_swap_high 95 /*在第818行处*/ 

##最高缓存百分比,当磁盘缓存空间容量达到了总缓存容量的95%时,那么 Squid 将会自动地将缓存目录内容量降至上面设置的90% 
maximum_object_size 4096 KB /*在第833行处*/ 

#单个文件最大缓存大小,超过这个大小将不缓存 
maximum_object_size_in_memory 8 KB /*在第850行处*/ 

#在内存中单个文件最大缓存大小,超过这个大小将不缓存到内存中 

#有DNS正反解所得到的IP存在缓存区的大小,这样可以加快解析速度 
ipcache_size 1024 /*在第858行处*/ 
ipcache_low 90 /*在第859行处*/ 
ipcache_high 95 /*在第860行处*/ 
fqdncache_size 1024 /*在第866行处*/ 

# LOGFILE PATHNAMES AND CACHE DIRECTORIES(定义日志文件的路径及cache的目录) 
# ----------------------------------------------------------------------------- 

#  <cache_dir>; <aufs|ufs>; <目录所在>; <MBytes大小>; <dir1>; <dir2>; 
#  那个 aufs 只有在编译的时候加入 --enable-async-io 那个选项才有支持, 
#  至于目录所在地与所占用的磁盘大小则请视您的主机情况而定, 
#  而后面 dir1, dir2 则是两个次目录的大小,通常 16 256 或 64 64 皆可, 
#  一般来说,数字最好是 16 的倍数,据说性能会比较好啦! 

cache_dir aufs /usr/local/squid/var/cache1 100 16 256 /*在第1055行处*/ 
cache_dir aufs /usr/local/squid/var/Cache2 200 16 256 /*在第1056行处*/ 

#日志存放位置 
access_log /usr/local/squid/var/logs/access.log squid /*在第1141行处*/ 


cache_log /usr/local/squid/var/logs/cache.log /*在第1149行处*/ 

# TAG: cache_store_log 
cache_store_log /usr/local/squid/var/logs/store.log /*在第1159行处*/ 
# TAG: pid_filename 
pid_filename /usr/local/squid/var/logs/squid.pid /*在第1257行处*/ 
#用代理登陆匿名ftp服务选项 
# TAG: ftp_user 
ftp_user Squid@ /*在第1305行处*/ 

#用户名 
ftp_passive on /*在第1320行处*/ 

#被动模式 

#认证 
#auth_param basic children 5 /*在第1817行到1832处全部注释*/ 
#auth_param basic realm Squid proxy-caching web server 
#auth_param basic credentialsttl 2 hours 
#auth_param basic casesensitive off 

# OPTIONS FOR TUNING THE CACHE(调整cache的选项) 
# ----------------------------------------------------------------------------- 


# TAG: refresh_pattern Cache更新时间设置 
#<refresh_pattern>; <regex>; <最小时间>; <百分比>; <最大时间>; 

refresh_pattern ^ftp: 1440 20% 10080 /*在第2066行处*/ 


refresh_pattern ^gopher: 1440 0% 1440 /*在第2067行处*/ 
refresh_pattern . 0 20% 4320 /*在第2068行处*/ 

#上面第一行如果网址开头是 ftp 的话,那么在一天(1440分钟)后, 
#如果proxy 再次取用这个档案时,则 cache 内的数据会被更新!

# TIMEOUTS (超时) 
# ----------------------------------------------------------------------------- 
#连接到其他机器的最大尝试时间 
connect_timeout 1 minute /*在第2196行处*/ 
#连接到上层代理的超时时间 
peer_connect_timeout 30 seconds /*在2205行处*/ 
#返回超时 
request_timeout 2 minutes /*在第2222行处*/ 
#持续连接时间 
persistent_request_timeout 1 minute /*在第2229行处*/ 

# ACCESS CONTROLS (访问控制) 

acl all src 0/0 

acl manaer proto cache_object 

acl localhost src 172.0.0.1 

acl to_localhost dst 127.0.0.0/8 

#============================定义安全端口范围======================== 

acl SSL_ports port 443 

acl Safe_ports port 80 

acl safe_ports port 21 

acl safe_ports port 443 

acl safe_ports port 70 

acl safe_ports port 210 

acl safe_ports port 1025-65535 

acl safe_ports port 280 

acl safe_ports port 488 

acl safe_ports port 591 

acl safe_ports port 777 

acl CONNECT method CONNECT 

# 定义允许访问 INTERNET 的用户组 

acl allow_group src “/usr/local/squid/acl/allow_group” 

# 定义拒绝QQ 登录及访问与qq.com & tencent.com 的网址,下面写出两种方面,两种方法都能拒绝 QQ 登录 

(1)acl deny_tencent dstdomain .tencent.com 

acl deny_qqip dst “/usr/local/squid/acl/deny_qqip” 

(2)acl qq url_regex –i qq.com 

acl tencent url_regex –i tencent.com 

# 定义禁止在 URL 里出现“qq”字符,不区分大小写 

acl bad_word url_regex –i qq 

# 定义限制网络访问的时间 

acl limit_time time SMTWHFAD 08:30-12:30 

acl limit_time time SMTWHFAD 13:30-17:30 

# 定义限制网络访问的用户 

acl limit_group src “/usr/local/squid/acl/limit_group” 

# 拒绝QQ登录 

http_access deny deny_tencent 

http_access deny deny_qqip 

http_access allow manager localhost 

http_access deny manager 

# 拒绝非安全端口连接 

http_access deny !safe_ports 

http_access deny CONNECT !SSL_ports 

# 允许指定的组访问 INTERNET 

http_access allow allow_group 

# 在限制的时间里拒绝指定的组进行网络访问 

http_access deny limit_time 

http_access allow limit_group 

# 拒绝所有 

http_access deny all 

# ADMINISTRATIVE PARAMETERS(管理参数) 
# ----------------------------------------------------------------------------- 

# TAG: cache_mgr 
cache_mgr webmaster@localhost /*在第2860行处*/  

#管理员信箱 

# TAG: cache_effective_user 
cache_effective_user squid /*在第2890行处*/ 

#运行squid时的用户 
cache_effective_group squid /*在第2902行处* 

squid #运行squid时的组 

# TAG: visible_hostname 
visible_hostname ProxyServer /*在第2918行处* 

#代理服务器名称 

# OPTIONS FOR THE CACHE REGISTRATION SERVICE(cache注册服务选项) 
# ----------------------------------------------------------------------------- 

改变目录权限,为了避免麻烦,我将 /usr/local/squid 目录下的所有权全部给 squid 所有 

# chown –R squid:squid /usr/local/squid 

建立存放访问控制文件的目录 

# mkdir /usr/local/squid/acl 

建立相应的访问控制文件 

# vi /usr/local/squid/acl/allow_group 

192.168.1.10 

192.168.1.11 

保存退出 

# vi /usr/local/squid/acl/deny_qqip 

192.168.1.21 

192.168.1.22 

保存退出 

# vi /usr/local/squid/acl/limit_group 

192.168.1.31 

192.168.1.32 

修改文件的所有权为用户 squid 

# chown –R squid /usr/local/squid/acl 



启动 squid: 

在启动之前我们可以用 /usr/local/squid/sbin/squid –k parse 命令检测一下我们所修改的配置文件是否有错误的地方。如果有配置不当的地方,会有相应的提示出现。 

在启动 squid 之前,首先我们必须建立缓存目录的格式,另外我们还需要用用户 squid 来启动 squid 服务 

# /usr/local/squid/sbin/squid –z #建立缓存目录 cache_dir,这一步在第一次启动 Squid 之前必须要做,在以后可以不用做。 

# su squid –c “/usr/local/squid/bin/RunCache &” 

在启动以后,我们可以用 netstat –tlunp 命令来检查一下Squid 是否正常运行,相应的端口是否处于监听状态 

用 ps –aux | grep squid 命令检查是否 Squid 进程正在运行中 

设置开机自启动 squid 

[root @ test root] # vi /etc/rc.local 

#在最后一行加上一句 

/usr/local/squid/sbin/squid –s 

这样squid 就会随开机自启动啦。; 

二、安装数据分析软件—sarg 

[root @ test root] # tar zxvf sarg-1.4.taiwan_big5.tar.gz 

[root @ test root] # cd sarg-1.4 

[root @ test sarg-1.4] # ./configure –prefix=/usr/local/sarg –enable-mandir=/usr/local/sarg/man1 –enable-bindir=/usr/local/sarg/bin 

[root @ test sarg-1.4] # make 

[root @ test sarg-1.4] # make install 

[root @ test sarg-1.4] # mkdir /usr/local/apache/htdoc/sarg 

[root @ test sarg-1.4] # vi /usr/local/sarg/sarg.conf 

language Taiwan_big5 

access_log /usr/local/squid/var/logs/access.log 

title “squid User Access Reports” 

temporary_dir /tmp 

output_dir /usr/local/apache/htdocs/sarg 

overwrite_report no 

mail_utility /bin/mail 

topsites_num 100 

exclude_codes /usr/local/sarg/exclude_codes 

max_elapsed 28800000 

charset big5 

[root @ test sarg-1.4] # /usr/local/sarg/bin/sarg 

SARG: s@i /usr/local/apache/htdocs/sarg/2007Sep09-2007Sep10 

现在就可以在浏览器内输入:http://192.168.0.251/sarg 查看 squid 的数据分析资料啦。 

Tags:Squid 服务器
关于开源中文网 - 联系我们 - 广告服务 - 网站地图 - 版权声明