# 主机名(3.0加入配置),无此项无法启动
visible_hostname 172.16.1.80
# 管理员邮箱,会显示在错误信息页面上,方便发生错误时联系!
cache_mgr [email protected]
# 实现透明代理(squid2.7以上),其中vhost是必须的
http_port 8091 vhost vport
icp_port 3130
# 缓存设置
cache_mem 256 MB
maximum_object_size_in_memory 2 MB
# 替换机制(lru叫做“最近不常用的单元”unit一般就是常说object, 也就是当cache
# 中的内容比如内存或硬盘达到上限时就需要进行数据的换进和换出工作)
memory_replacement_policy lru
# 缓存目录50G,其中一级目录16个,二级256个(每个一级下16个二级)
cache_dir ufs /data1/squid/var/cache 500000 16 256
max_open_disk_fds 0
#缓存内容大小控制,当cache目录被占用到97%时,内容将被清空20%
cache_swap_low 80
cache_swap_high 97
# 错误信息目录
error_directory /usr/local/squid/share/errors/Simplify_Chinese
# 最大和最小缓存对象
minimum_object_size 0 KB
maximum_object_size 30 MB
# 日志格式
logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %
access_log /usr/local/squid/var/logs/page_zs_access_log combined
pid_filename /usr/local/squid/var/logs/squid.pid
# 不记录store.log
cache_store_log none
# 指定代理服务器IP,2.5版本以上都是以cache_peer指定,sibling是2台squid服务的缓存不同内容,当一个节点没有命中去另一个节点查找,主要为了减少负载,后端是1.84 85 86没命中缓存的图片裁剪服务器
cache_peer 172.16.1.83 sibling 8091 3130
cache_peer 172.16.1.82 sibling 8091 3130
cache_peer 172.16.1.84 parent 10001 0 no-query originserver round-robin name=resize1
cache_peer 172.16.1.85 parent 10001 0 no-query originserver round-robin name=resize2
cache_peer 172.16.1.86 parent 10001 0 no-query originserver round-robin name=resize3
cache_peer_domain resize1 resize2 resize3
#缓存过期
refresh_pattern -i \.jpg$ 1440 90% 43200 reload-into-ims
refresh_pattern -i \.jpeg$ 1440 90% 43200 reload-into-ims
refresh_pattern -i \.webp$ 1440 90% 43200 reload-into-ims
refresh_pattern -i \.png$ 1440 90% 43200 reload-into-ims
# 允许客户端所有请求(这里可以设置拦截url,格式如下面两行缓存设置)
http_access allow all
#设置运行squid用户,一般不能以root运行
cache_effective_user squid
cache_effective_group squid
~
命令
Squid日常维护过程中,常用的一些命令:
1,初始化你在 squid.conf 里配置的 cache 目录
squid -z
如果有错误提示,请检查你的 cache目录的权限。
可以使用使用更改目录权限:
chown -R squid:squid /cache目录
2,对你的squid.conf 排错,即验证 squid.conf 的 语法和配置。
squid -k parse
如果squid.conf 有语法或配置错误,这里会返回提示你,如果没有返回,尝试启动squid。
3,在前台启动squid,并输出启动过程。
/usr/local/squid/sbin/squid -N -d1
如果有ready to server reques相关信息,说明Squid启动成功。
然后 ctrl + c,停止squid,并以后台运行的方式启动它。
4,启动squid在后台运行。
squid -s
可以使用 ps -ax |grep squid 来查看squid进程是否存在。
5,停止 squid
squid -k shutdown
6,重引导修改过的 squid.conf
squid -k reconfigure -f /XXX/squid.conf
当squid进行过配置更改后,可以使用该命令进行squid配置重载。
7,把squid添加到系统启动项
vi /etc/rc.d/rc.local
/usr/local/squid/sbin/squid -s
8,修改cache 缓存目录的权限。
chown -R squid:squid /cache目录
cache缓存目录根据自己配置进行更改,squid用户和组是 squid,squid
(注:在FreeBSD系统中,如果我们的squid监听的是80端口时,只有root用户才能启动)。
9,修改squid 日志目录的权限
chown -R squid:squid 定义的日志文件所在目录
这一步并不是适合每一个使用squid的用户.意为让squid有权限在该目录进行写操作 。
10,查看你的日志文档。
more /usr/local/squid/var/logs/access.log | grep TCP_MEM_HIT
该指令可以看到在squid运行过程中,有那些文件被squid缓存到内存中,并返回给访问用户。
more /usr/local/squid/var/logs/access.log | grep TCP_HIT
该指令可以看到在squid运行过程中,有那些文件被squid缓存到cache目录中,并返回给访问用户。
more /usr/local/squid/var/logs/access.log | grep TCP_MISS
该指令可以看到在squid运行过程中,有那些文件没有被squid缓存,而是从原始服务器获取并返回给访问用户。
二.squid命中率分析
/usr/local/squid/bin/squidclient -p 80 mgr:info
/usr/local/squid/bin/squidclient -p 80 mgr:5min
可以看到详细的性能情况,其中PORT是你的proxy的端口,5min可以是60min
取得squid运行状态信息: squidclient -p 80 mgr:info
取得squid内存使用情况: squidclient -p 80 mgr:mem
取得squid已经缓存的列表: squidclient -p 80 mgr:bjects. use it carefully,it may crash
取得squid的磁盘使用情况: squidclient -p 80 mgr:diskd
强制更新某个url:squidclient -p 80 -m PURGE http://www.xxx.com/xxx.php
更多的请查看:squidclient-h 或者 squidclient -p 80 mgr:
查命中率:
squidclient -h IP(具体侦听IP) -p 80(具体侦听端口) mgr:info
三、定期清除swap.state内无效数据
/path/to/squid/sbin/squid -k rotate -f /path/to/squid/conf_file
vi /etc/crontab
0 0 * * * root /usr/local/sbin/squid -k rotate -f /usr/local/etc/squid/squid1.conf
当squid应用运行了一段时间以后,cache_dir对应的swap.state文件就会变得越来越大,里面的无效接口数据越来越多,这可能影响squid的响应时间,因此需要使用rotate命令来使squid清理swap.state里面的无效数据,减少swap.state的大小。
办公室做的squid给客服用,主要是针对本公司网站图片做的缓存
visible_hostname 192.168.10.89
cache_mgr [email protected]
http_port 8091 vhost vport
icp_port 3130
cache_mem 30000 MB
maximum_object_size_in_memory 2 MB
memory_replacement_policy lru
cache_dir ufs /data1/squid/var/cache 50000 16 256
max_open_disk_fds 0
cache_swap_low 80
cache_swap_high 97
error_directory /usr/local/squid/share/errors/Simplify_Chinese
minimum_object_size 0 KB
maximum_object_size 30 MB
logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %
access_log /usr/local/squid/var/logs/page_zs_access_log combined
pid_filename /usr/local/squid/var/logs/squid.pid
cache_store_log none
cache_peer 192.168.10.89 sibling 8091 3130
cache_peer 192.168.10.59 sibling 8091 3130
cache_peer * parent 80 0 no-query originserver name=d
cache_peer * parent 80 0 no-query originserver name=j
cache_peer * parent 80 0 no-query originserver name=a
cache_peer * parent 80 0 no-query originserver name=b
cache_peer * parent 80 0 no-query originserver name=c
cache_peer * parent 80 0 no-query originserver name=e
cache_peer * parent 80 0 no-query originserver name=f
cache_peer * parent 80 0 no-query originserver name=g
cache_peer * parent 80 0 no-query originserver name=h
cache_peer * parent 80 0 no-query originserver name=i
cache_peer_domain d *.com
cache_peer_domain a *.com
cache_peer_domain b *.com
cache_peer_domain c *.com
cache_peer_domain e *.com
cache_peer_domain f *.com
cache_peer_domain g *.com
cache_peer_domain h *.com
cache_peer_domain i *.com
cache_peer_domain j *.com
refresh_pattern -i \.jpg$ 1440 90% 43200 reload-into-ims
refresh_pattern -i \.jpeg$ 1440 90% 43200 reload-into-ims
refresh_pattern -i \.webp$ 1440 90% 43200 reload-into-ims
refresh_pattern -i \.png$ 1440 90% 43200 reload-into-ims
http_access allow all
cache_effective_user squid
cache_effective_group squid