来源: ChinaUnix博客 作者: ChinaUnix博客 发布时间:2008-04-24
创建日期:2005年4月4日
更新日期:2005年4月30日
1.安装
2.日志分析
2.1.sarg
3.mrtg
4.squid配置文档详解
本文用到的软件
- Squid 2.5
- 网站:
http://www.squid-cache.org
-
下载
- sarg 2.0.6
- 网站:
http://sarg.sourceforge.net
-
下载
- MRTG 2.11.1
- 网站:
http://people.ee.ethz.ch/~oetiker/webtools/mrtg
-
下载
1.安装
添加suqid用户和用户组
# groupadd squid
# useradd -g squid -s /bin/false -c "For Squid Only" squid
能够根据您的CPU选择相应的参数,GCC-3.1以上可CPU最好化:
# export CFLAGES='-O2 -mcpu=pentium4 -march=pentium4 -mmmx -msse -msse2'
假如是其他cpu请按参考下面的
Pentium2: -O2 -mcpu=i686 -march=i686 -mmmx
Pentium3: -O2 -mcpu=pentium3 -march=pentium3 -mmmx -msse
# wget http://www.squid-cache.org/Versions/v2/2.5/squid-2.5.STABLE9.tar.bz2
# tar jxvf squid-2.5.STABLE9.tar.bz2
# cd squid-2.5.STABLE9
./configure --prefix=/usr/local/squid --sysconfdir=/usr/local/etc
--enable-gnuregex --enable-async-io=80 --enable-icmp
--enable-kill-parent-hack --enable-snmp --disable-ident-lookups
--enable-cahce-digests --enable-arp-acl
--enable-err-language="Simplify_Chinese"
--enable-default-err-languages="Simplify_Chinese" --enable-poll
--enable-linux-netfilter --enable-underscore
参数说明:
--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 能够支持透明代理
--enable-underscore 允许解析的URL中出现下划先,因为默认squid会认为带下划线的URL地址是非法的,并拒绝访问该地址
# make
# make install
# mkdir /var/log/squid
# chown -R squid.squid /var/log/squid
Move the cache manager program to /var/www/cgi-bin/
# mv /usr/lib/squid/cachemgr.cgi /var/www/cgi-bin/cachemgr.cgi
将cache目录的任何者更改为squid
# chown -R squid.squid /cache1
# chown -R squid.squid /cache2
# chmod 770 /cache1
# chmod 770 /cache2
下面是我的squid.conf文档
# cat /usr/local/etc/squid.conf
# Squid port
http_port 3128
### cache dir
cache_dir aufs /cache1 7000 16 256
cache_dir aufs /cache2 7000 16 256
# 缓存目录:/cache 类型:ufs 大小:530mb 能够在目录下建立一级(16)和二级目录(256)
cache_mem 32 MB # cache内存大小:32mb
cache_store_log /var/log/squid/store.log #Squid的日志1:在/var/log/squid下
cache_access_log /var/log/squid/access.log #Squid的日志2:在/var/log/squid下
cache_log /var/log/squid/cache.log #Squid的日志3:在/var/log/squid下
### cache user
cache_effective_user squid #缓存用户UID
cache_effective_group squid #缓存用户组 GID
### cache admin
visible_hostname proxyserver #发生错误时,生成提示所显示的缓存服务器名
cache_mgr cairt@sippc.com #发生错误时,生成提示所显示的缓存服务器管理员名
acl all src 0.0.0.0/0.0.0.0
http_access allow all
#以上2句允许任何ip使用该缓存服务器
acl badwords url_regex -i sex
http_access deny badwords
#以上2句不允许使用该缓存服务器访问URL正则表达式中含sex字样的URL
### httpd 透明代理配置
httpd_accel_host proxy
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
对cache目录进行初始化
# /usr/local/squid/sbin/squid -z
关于Cache目录的建议
于cache目录是经常的读写,所以最好硬盘能用SCSI的,速度比较快而且稳定。假如我们的cache大概需要40G的大小,那么我们尽量使用多硬盘,
不要当纯用一个40G的硬盘,能够使用4个10G的硬盘,这样,对于cache的速度更快。比如,当您有10M的东西要写到cache中,假如是只是用一
个硬盘的话,虽然可能您已将4个cache目录分别放在4个分区,可是您只有一个硬盘,同时只有一个在写入,可是当您有4个硬盘的时候,您每个硬盘就只
要写入2.5M的东西,那样是不是更快呢?
更有,建议将每个cache目录单独存放在一个分区中,分区不要划分太大,一般2至4G就行,这样proxy搜索资料的时候不用耗费太多的时间。
在后台运行
# su squid -c "/usr/local/squid/bin/RunCache &"
检查Squid是否运行
# /usr/local/squid/sbin/squid –k check
关闭
# /usr/local/squid/sbin/squid -k shutdown
要执行两次才能正常关闭suqid
重新读取squid.conf文档
# /usr/local/squid/sbin/squid -k reconfigure
需要执行两次才能重新读取squid.conf文档
配置iptables支持透明代理
# echo "1"> /proc/sys/net/ipv4/ip_forward
# iptables -t nat -A PREROUTING -i eth1 -p tcp -s 192.168.0.0/24 --dport 80 -j REDIRECT --to-ports 3128
其中192.168.0.0/24表示192.168.0.1-254这个网段通过squid和nat做透明代理。
这样,当用户访问www服务的时候能够使用cache作为高速代理,减少流量,而其他服务则通过nat转发。
下面是个例子 http_port 3128
cache_dir aufs /cache 680 16 256
cache_mem 300 MB
cache_swap_low 85
cache_swap_high 95
maximum_object_size 2048 KB
ipcache_size 4096
ipcache_low 90
ipcache_high 95
fqdncache_size 1024 cache_store_log /var/log/squid/store.log
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
##ftp
ftp_user Squid@
ftp_passive on
cache_effective_user squid
cache_effective_group squid
visible_hostname proxyserver
cache_mgr jiangt@weblendar.com
cachemgr_passwd mypass all
acl all src 0/0
http_access allow all
acl badwords url_regex -i sex
http_access deny badwords
acl QUERY urlpath_regex -i cgi-bin \? \.asp \.php \.jsp \.cgi \.do
acl denyssl urlpath_regex -i ^https:\\
no_cache deny QUERY
no_cache deny denyssl
refresh_pattern . 720 50% 1440
httpd_accel_host proxy
#httpd_accel_host virtual
httpd_accel_port 80
#httpd_accel_port 127.0.0.1:80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
error_directory /usr/local/squid/share/errors/Simplify_Chinese
acl snmppublic snmp_community public
snmp_port 3401
snmp_access allow snmppublic all