|
.....
http://www.squid-cache.org/Versions/v2/2.7/
http://os.iyunv.com/art/201009/225813.htm
========================================
http://book.iyunv.com/art/200904/119268.htm
16.3.6 启动和停止代理服务器(2)
3.重新启动代理服务器
重新启动Squid代理服务器的命令如下:
[iyunv@localhost ~]# /etc/init.d/squid restart
| 4.重新载入配置文件
【方法一】
重新载入配置文件的命令如下:
[iyunv@localhost ~]# /etc/rc.d/init.d/squid reload
| 【方法二】
使用squid -k reconfigure命令,如图16-18所示。
[iyunv@localhost ~]# /usr/local/squid/sbin/squid -k reconfigure
| 当运行该命令时,HUP信号被发送到运行中的Squid服务进程,然后Squid服务进程读取和解析squid.conf文件。
| (点击查看大图)图16-18 重新载入配置文件 | 修改了Squid服务的配置文件,若想使新的配置生效,虽说可以通过重启服务的方式实现,但是面临大型应用的网络正在处于服务状态的Squid服务 器是不能够随意重新启动的。遇到此类问题时,只好采用当前这种重新载入配置文件的方法,既不会重启Squid服务影响当前正在进行的服务,又可以载入新编 辑的配置文件,以达到变更规则的目的。但在使用重新载入配置文件的方法时我们需谨慎,因为所做的配置上的改变可能会导致致命错误。
http://www.360doc.com/content/10/1025/14/737570_63865241.shtml
http://blog.sina.com.cn/s/blog_67dd1efa0100izc0.html
squid常用命令:
/usr/local/squid/sbin/squid -z 初始化缓存空间
/usr/local/squid/sbin/squid 启动
/usr/local/squid/sbin/squid -k shutdown 停止
/usr/local/squid/sbin/squid -k reconfigure 重新载入配置文件
/usr/local/squid/sbin/squid -k rotate 轮循日志
http://blog.sina.com.cn/s/blog_710236d201012xuu.html
当你的 squid.conf 配置文档按照你的想法修改完以后,启动 squid 之旅就开始了。
Squid安装设试命令:
1,初始化你在 squid.conf 里配置的 cache 目录
#/usr/local/squid/sbin/squid -z //初始化缓存空间
如果有错误提示,请检查你的 cache目录的权限。
2,对你的squid.conf 排错,即验证 squid.conf 的 语法和配置。
#/usr/local/squid/sbin/squid -k parse
如果squid.conf 有语法或配置错误,这里会返回提示你,如果没有返回,恭喜,可以尝试启动squid。
3,在前台启动squid,并输出启动过程。
#/usr/local/squid/sbin/squid -N -d1
如果有到 ready to server reques,恭喜,启动成功。
然后 ctrl + c,停止squid,并以后台运行的方式启动它。
4,启动squid在后台运行。
#/usr/local/squid/sbin/squid -s
这时候可以 ps -A 来查看系统进程,可以看到俩个 squid 进程。
5,停止 squid
#/usr/local/squid/sbin/squid -k shutdown
这个不用解释吧。
6,重引导修改过的 squid.conf
#/usr/local/squid/sbin/squid -k reconfigure //载入新的配置文件
这个估计用的时候比较多,当你发现你的配置有不尽你意的时候,可以随时修改squid.conf,然后别忘记对你的
squid.conf排错,然后再执行此指令,即可让squid重新按照你的 squid.conf 来运行。
7./usr/local/squid/sbin/squid -k rotate 轮循日志
8,把squid添加到系统启动项
编辑 /etc/rc.d/rc.local
添加如下行: /usr/local/squid/sbin/squid -s
利用Runc脚本........
再来点其他的。
1,修改cache 缓存目录的权限。
#chown -R squid:squid /data/cache
我的cache缓存目录是 /data/cache,squid执行用户和用户组是 squid,squid。
2,修改squid 日志目录的权限
#chown -R squid:squid /usr/local/squid/var/logs
这一步并不是适合每一个使用squid的用户.意为让squid有权限在该目录进行写操作 。
例如生成 access.log cache.log store.log
3,查看你的日志文档。
#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缓存,而是现重原始服务器获取并返回给访问用户。
关于 TCP_XXXX 等参数及代表的信息,请参看《squid中文权威指南》13.2.1 章节。
当然,本例中的蓝色文字是可以修改为其他的参数,例如你的域名 www.xxxx.com ,同样可以看到access.log里关于该域名的行。
二.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 mgrbjects. 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:
查命中率:
/usr/local/squid/bin/squidclient -h 111.222.111.111 -p80
mgr:info
/usr/local/squid/bin/squidclient -h具体的IP -p80 mgr:info
亚洲数据(http://www.asiadat.cn)基于IDC的领先的一体化增值电信服务提供商,服务产品包括云主机,服务器托管,主机托管,专线接入,网站安全,网站加速,应用交付等多领域全方位IT服务业务。
=========================================
http://wayde.org/?p=660
其实本人实在是更喜欢Varnish一 些,而线上用来跑css/js等静态文件cache的Varnish也确实运行的非常好,缓存的命中率也很高,性能也很好。但是因为是内存式的 Cache,Varnish在缓存图片时当达到一定量的时候会出现无法分配内存导致重启子进程缓存丢失的情况。所以当图片数量级较大且访问量较大时,还是 老老实实用Squid吧。
安装环境
操作系统: CentOS release 5.2 (Final)
Kernel: 2.6.18-92.el5PAE
软件列表
squid-2.6.STABLE22.tar.gz
软件存放位置
/data/software
安装过程
#/usr/sbin/groupadd squid -g 610
#/usr/sbin/useradd -u 610 -g squid squid
#mkdir /srv/scache
#chmod +w /var/vcache
#chown -R squid.squid /srv/scache
#mkdir /var/log/squid
#chmod +w /var/log/squid
#chown -R squid.squid /var/log/squid
#cd /data/software/pkg
#tar zxvf ../squid-2.6.STABLE22.tar.gz
#cd squid-2.6.STABLE22
#./configure --prefix=/usr/local/squid
#make && make install
编辑Squid配置文件
#vi /usr/local/squid/etc/squid.conf
-------------------------华丽的分割线,以下都是配置文件内容----------------------------
#定义acl项名称
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443
acl Safe_ports port 80
acl safeprotocol protocol HTTP
acl test dstdomain .test.com
acl CONNECT method CONNECT
#定义acl规则
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access deny to_localhost
http_access allow safeprotocol Safe_ports test
http_access deny all
icp_access allow all
#squid监听端口
http_port 80 accel defaultsite=59.151.32.58 vhost
always_direct allow all
#后端服务器
cache_peer 10.10.10.8 parent 80 0 no-query originserver
hierarchy_stoplist cgi-bin ?
#内存cache大小
cache_mem 2048 MB
#内存cache中最大的object大小(超过这个值则不进入内存cache)
maximum_object_size_in_memory 8 KB
#内存cache的替换规则
memory_replacement_policy lru
#硬盘cache的替换规则
cache_replacement_policy lru
#磁盘cache目录(文件类型 cache目录路径 cache目录大小 二级目录个数 每个二级目录下的三级目录个数)
cache_dir ufs /srv/scache 40000 16 256
#磁盘cache中最小的object的大小(低于这个值则不缓存)
minimum_object_size 0 KB
#磁盘cache中最大的object的大小(超过这个值则不缓存)
maximum_object_size 2048 KB
cache_swap_low 90
cache_swap_high 95
#定义日志格式
logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %<st "%{Referer}>h" "%{User-Agent}>h" %Ss:%Sh
#记录相关日志
access_log /var/log/squid/access.log squid
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log
#日志rotate(24则后缀从.0到.23)
logfile_rotate 24
emulate_httpd_log on
#如果你的URL里面带有?,这两行一定要注销掉
#acl QUERY urlpath_regex cgi-bin \?
#cache deny QUERY
#配置自动更新(关于后面的三个值请参考Squid配置手册)
refresh_pattern -i \.jpg$ 60 80% 1440
refresh_pattern -i \.png$ 60 80% 1440
refresh_pattern -i \.gif$ 60 80% 1440
quick_abort_min 16 KB
quick_abort_max 16 KB
quick_abort_pct 95
request_header_max_size 10 KB
reply_header_max_size 10 KB
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache
#相关timeout设置
forward_timeout 4 minutes
connect_timeout 3 minutes
peer_connect_timeout 30 seconds
read_timeout 15 minutes
request_timeout 1 minute
persistent_request_timeout 3 minutes
half_closed_clients off
pconn_timeout 1 minute
#cache管理员邮箱
cache_mgr webmaster@test.com
cache_effective_user squid
cache_effective_group squid
#squid服务器的visible_hostname,此处指定的值显示在Squid响应的Header里面的X-Cache项中
visible_hostname squidserver
coredump_dir /var/log/squid/cache
------------------------华丽的分割线,以上都是配置文件内容-----------------------------
初始化squid缓存目录
#/usr/local/squid/sbin/squid -z
启动squid
#/usr/local/squid/sbin/squid -sD
配置完成以后,最重要最重要的一点,修改Squid服务器的hosts文件,将需要Cache的域名指向到后端的服务器IP上
相关命令
停止squid
/usr/local/squid/sbin/squid -k shutdown
启用新配置
/usr/local/squid/sbin/squid -k reconfig
通过crontab每小时截断/轮循日志
59 * * * * /usr/local/squid/sbin/squid -k rotate
查看squid运行状况
/usr/local/squid/bin/squidclient -p 80 mgr:info
/usr/local/squid/bin/squidclient -p 80 mgr:5min
查看squid内存使用情况
/usr/local/squid/bin/squidclient -p 80 mgr:mem
查看squid磁盘使用情况
/usr/local/squid/bin/squidclient -p 80 mgr:diskd
查看squid已缓存列表(小心使用,可能会导致crash)
/usr/local/squid/bin/squidclient -p 80 mgrbjects
强制更新某个url
/usr/local/squid/bin/squidclient -p 80 -m PURGE http://img.test.com/h/a.jpg
查看squid缓存到内存cache中并返回给访问用户的项
#cat /var/log/squid/access.log | grep TCP_MEM_HIT
查看squid缓存到磁盘cache中并返回给访问用户的项
#cat /usr/local/squid/var/logs/access.log | grep TCP_HIT
查看没被squid缓存住,直接从原始服务器获取并返回给访问用户的项
#cat /usr/local/squid/var/logs/access.log | grep TCP_MISS
关于 TCP_XXXX 等参数及代表的信息,请参考《squid中文权威指南》13.2.1 章节。-本文来自http://www.blogbus.com/iyubo-logs/37254471.html
更多参数
/usr/local/squid/bin/squidclient -h
/usr/local/squid/bin/squidclient -p 80 mgr:menu
参考文档
http://www.squid-cache.org/Versions/v2/2.6/cfgman/
http://www.deckle.co.za/squid-users-guide/Accelerator_Mode#Squid_Version_2.6
以下是来自Squid优化的文章,来自扶凯
[
]
Squid优化(一)
Hot!几个SQUID重要参数:
maximum_object_size 是 能cache最大的文件大小.对应wmv,rm文件,建议设置为32768 kB
maximum_object_size_in_memory 是在内存中cache的最大文件大小.
cache_mem 是SQUID可用到的最大内存.经实践,4G内存的服务器用2G;超过2G导致SQUID运行不稳
首先要分析SQUID所cache内容:
运行
squidclient -p 80 cache_object://localhost/info
能看到如下内容:
Storage Swap size: 7549104 KB
Storage Mem size: 418804 KB
Mean Object Size: 160.46 KB
Mean Object Size是平均内容大小,一般要把maximum_object_size_in_memory设置成离它最近的128的倍数.在这个例子中maximum_object_size_in_memory 的值应该是256kB.
cache_mem 一般设置成服务器内存的一半或更多,只要运行过程中LINUX没有使用SWAP就可以.
再就是按业务分SQUID.
比如某个论坛,用户能上载图片和视频;当然我们要把上载的图片、视频放在单独的域名上,比如img.example.com, video.example.com;这两个域名只提供静态文件服务.
根据统计,图片的平均大小在100KB,视频的平均大小在4M,差别是很大,应该建两个squid分别作图片和视频的CACHE.图片SQUID的
maximum_object_size_in_memory
设置为256KB,视频的SQUID的maximum_object_size_in_memory设置为8196KB.
Squid优化(2)
Hot!探讨动态内容的CACHE.
BBS,论坛是典型动态内容,要保证内容更新及时的同时,提高访问速度,降低数据库负担不是个简单任务.经实践发现如下办法取得很好效果:
1) 配置SQUID,对动态内容强制CACHE,用到的配置参数是refresh_pattern
refresh_pattern ^/forum/viewthread.php 1440 1000% 1440 ignore-reload
/forum/viewthread.php的内容将强制保持1天
2) 修改论坛程序在用户回复帖子后,向SQUID发送PURGE命令清除相应帖子的页面CACHE,保证失效性
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~实现过这一功能,但是有时候生效,有时候无效,还未进一步查明原因.(Edit by Sean)
3) 有些频繁更新的页面可以不CACHE,用no_cache参数
acl no_forum_cache urlpath_regex ^/forum/forumdisplay.php
no_cache DENY no_forum_cache
----------------------------------------
http://www.aminglinux.com/bbs/forum.php?mod=viewthread&tid=757
使用命令: squidclient -h host -p port mgr:info
比如: /usr/local/squid/bin/squidclient -h 127.0.0.1 -p 8080 mgr:info
使用这个命令的前提是,你在你的squid.conf 中配置了相关的选项
acl manager proto cache_object
http_access allow manager
http://2315500.blog.iyunv.com/2305500/1368869
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的大小。
http://www.cnblogs.com/VincentXu/p/3468872.html
Squid 启动/停止/重载配置文件 命令
当你的 squid.conf 配置文档按照你的想法修改完以后,启动 squid 之旅就开始了。
Squid安装设试命令:
1,初始化你在 squid.conf 里配置的 cache 目录
#/usr/local/squid/sbin/squid -z //初始化缓存空间
如果有错误提示,请检查你的 cache目录的权限。
2,对你的squid.conf 排错,即验证 squid.conf 的 语法和配置。
#/usr/local/squid/sbin/squid -k parse
如果squid.conf 有语法或配置错误,这里会返回提示你,如果没有返回,恭喜,可以尝试启动squid。
3,在前台启动squid,并输出启动过程。
#/usr/local/squid/sbin/squid -N -d1
如果有到 ready to server reques,恭喜,启动成功。
然后 ctrl + c,停止squid,并以后台运行的方式启动它。
4,启动squid在后台运行。
#/usr/local/squid/sbin/squid -s
这时候可以 ps -A 来查看系统进程,可以看到俩个 squid 进程。
5,停止 squid
#/usr/local/squid/sbin/squid -k shutdown
这个不用解释吧。
6,重引导修改过的 squid.conf
#/usr/local/squid/sbin/squid -k reconfigure //载入新的配置文件
这个估计用的时候比较多,当你发现你的配置有不尽你意的时候,可以随时修改squid.conf,然后别忘记对你的 squid.conf排错,然后再执行此指令,即可让squid重新按照你的 squid.conf 来运行。
7./usr/local/squid/sbin/squid -k rotate 轮循日志
8,把squid添加到系统启动项
编辑 /etc/rc.d/rc.local
添加如下行: /usr/local/squid/sbin/squid -s
利用Runc脚本........
再来点其他的。
1,修改cache 缓存目录的权限。
#chown -R squid:squid /data/cache
我的cache缓存目录是 /data/cache,squid执行用户和用户组是 squid,squid。
2,修改squid 日志目录的权限
#chown -R squid:squid /usr/local/squid/var/logs
这一步并不是适合每一个使用squid的用户.意为让squid有权限在该目录进行写操作 。
例如生成 access.log cache.log store.log
3,查看你的日志文档。
#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缓存,而是现重原始服务器获取并返回给访问用户。
关于 TCP_XXXX 等参数及代表的信息,请参看《squid中文权威指南》13.2.1 章节。
当然,本例中的蓝色文字是可以修改为其他的参数,例如你的域名 www.xxxx.com ,同样可以看到access.log里关于该域名的行。
二.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 mgrbjects. 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:
查命中率:
/usr/local/squid/bin/squidclient -h 111.222.111.111 -p80 mgr:info
/usr/local/squid/bin/squidclient -h具体的IP -p80 mgr:info
http://www.centoscn.com/CentosServer/www/2014/0412/2776.html
一.Squid是什么
Squid是一种用来缓冲Internet数据的软件。它是这样实现其功能的,接受来自人们需要下载的目标(object)的请求并适当地处理这些请求。 也就是说,如果一个人想下载一web页面,他请求Squid为他取得这个页面。Squid随之连接到远程服务器并向这个页面发出请求。然后,Squid显 式地聚集数据到客户端机器,而且同时复制一份。当下一次有人需要同一页面时,Squid可以简单地从磁盘中读到它,那样数据迅即就会传输到客户机上。当前 的Squid可以处理HTTP,FTP,GOPHER,SSL和WAIS等协议。但它不能处理如POP,NNTP,RealAudio以及其它类型的东 西。
squid各种代理的定义
正向代理
a.标准的代理缓冲服务器
一个标准的代理缓冲服务被用于缓存静态的网页(例如:html文件和图片文件等)到本地网络上的一台主机上(即代理服务器)。当被缓存的页面被第二次 访问的时候,浏览器将直接从本地代理服务器那里获取请求数据而不再向原web站点请求数据。这样就节省了宝贵的网络带宽,而且提高了访问速度。但是,要想 实现这种方式,必须在每一个内部主机的浏览器上明确指明代理服务器的IP地址和端口号。客户端上网时,每次都把请求送给代理服务器处理,代理服务器根据请 求确定是否连接到远程web服务器获取数据。如果在本地缓冲区有目标文件,则直接将文件传给用户即可。如果没有的话则先取回文件,先在本地保存一份缓冲, 然后将文件发给客户端浏览器。
b.透明代理缓冲服务器(常用在局域网网关上安装,配合防火墙reject使用)
透明代理缓冲服务和标准代理服务器的功能完全相同。但是,代理操作对客户端的浏览器是透明的(即不需指明代理服务器的IP和端口)。透明代理服务器阻 断网络通信,并且过滤出访问外部的HTTP(80端口)流量。如果客户端的请求在本地有缓冲则将缓冲的数据直接发给用户,如果在本地没有缓冲则向远程 web服务器发出请求,其余操作和标准的代理服务器完全相同。对于Linux操作系统来说,透明代理使用Iptables或者Ipchains实现。因为 不需要对浏览器作任何设置,所以,透明代理对于ISP(Internet服务器提供商)特别有用。
反向代理
a.反向代理缓冲服务器
反向代理是和前两种代理完全不同的一种代理服务。使用它可以降低原始WEB服务器的负载。反向代理服务器承担了对原始WEB服务器的静态页面的请求, 防止原始服务器过载。它位于本地WEB服务器和Internet之间,处理所有对WEB服务器的请求,组织了WEB服务器和Internet的直接通信。 如果互联网用户请求的页面在代理服务器上有缓冲的话,代理服务器直接将缓冲内容发送给用户。如果没有缓冲则先向WEB服务器发出请求,取回数据,本地缓存 后再发送给用户。这种方式通过降低了向WEB服务器的请求数从而降低了WEB服务器的负载。
二.系统架构
1.原理说明
通过DNS的轮询技术,将来自客户端的请求分发给其中一台 Squid 反向代理服务器处理,如果这台 Squid 缓存了用户的请求资源,则将请求的资源直接返回给用户,否则 Squid 将此次请求根据配置的规则发送给邻居 Squid 和后台的 WEB 服务器处理,这样既减轻后台 WEB 服务器的负载,又提高整个网站的性能和安全性。
2.主机分配:
DNS服务器: 启用两张网卡,连接两个网段
eth0:10.10.54.150
eth1:172.16.54.254(作为172.16.54.0/24网段的网关)
两台squid反向代理服务器
squid1:172.16.54.150
squid2:172.16.54.151
两台web服务器(安装Discuz_X3.0_SC_UTF8.zip)
web1:172.16.54.200
web2:172.16.54.201
三台mysql服务器(一主两从)
master:172.16.54.203
slave1:172.16.54.204
slave2:172.16.54.205
三:首先进行内存优化
编辑sysctl.conf文件,添加以下内容
|
shell> vi /etc/sysctl.conf
net.ipv4.tcp_rmem = 4096 87380 4194304
net.ipv4.tcp_wmem = 4096 65536 4194304
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.netdev_max_backlog = 262144
net.core.somaxconn = 262144
net.ipv4.tcp_max_orphans = 3276800
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_mem = 786432 1048576 1572864
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.ip_local_port_range = 1024 65000
#配置选项解释:
net.ipv4.tcp_rmem = 4096 87380 4194304:TCP读buffer,可参考的优化值: 32768 436600 873200
net.ipv4.tcp_wmem = 4096 65536 4194304:TCP写buffer,可参考的优化值: 8192 436600 873200
net.core.wmem_default:表示发送套接字缓冲区大小的缺省值(以字节为单位)
net.core.rmem_default:表示接收套接字缓冲区大小的缺省值(以字节为单位)
net.core.rmem_max :表示接收套接字缓冲区大小的最大值(以字节为单位)
net.core.wmem_max:表示发送套接字缓冲区大小的最大值(以字节为单位)
net.core.netdev_max_backlog = 262144:每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目。
net.core.somaxconn = 262144:web应用中listen函数的backlog默认会给我们内核参数的net.core.somaxconn限制到128,而nginx定 义的NGX_LISTEN_BACKLOG默认为511,所以有必要调整这个值。
net.ipv4.tcp_max_orphans = 3276800:系统中最多有多少个TCP套接字不被关联到任何一个用户文件句柄上。
net.ipv4.tcp_max_syn_backlog = 8192:表示SYN队列的长度,默认为1024,加大队列长度为8192,可以容纳更多等待连接的网络连接数。
net.ipv4.tcp_max_tw_buckets = 5000:表示系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数字,TIME_WAIT套接字将立刻被清除并打印警告信息。减少它的最大 数量,避免Squid服务器被大量的TIME_WAIT套接字拖死。
net.ipv4.tcp_timestamps = 0:时间戳可以避免序列号的卷绕。一个1Gbps的链路肯定会遇到以前用过的序列号,时间戳能够让内核接受这种“异常”的数据包,这里需要将其关掉。
net.ipv4.tcp_tw_recycle = 1:表示开启TCP连接中TIME-WAIT sockets的快速回收。
net.ipv4.tcp_tw_reuse = 1:表示开启重用,允许将TIME-WAIT sockets重新用于新的TCP连接。
net.ipv4.tcp_mem = 786432 1048576 1572864:同样有3个值,net.ipv4.tcp_mem[0]:低于此值,TCP没有内存压力;net.ipv4.tcp_mem[1]:在此 值下,进入内存压力阶段;net.ipv4.tcp_mem[2]:高于此值,TCP拒绝分配socket。可根据物理内存大小进行调整,如果内存足够大 的话,可适当往上调。建议94500000 915000000 927000000。
net.ipv4.tcp_fin_timeout = 30:表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间。
net.ipv4.tcp_keepalive_time = 1200:表示当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时,改为20分钟。
net.ipv4.ip_local_port_range = 1024 65000:表示用于向外连接的端口范围。缺省情况下很小:32768到61000,改为1024到65000。
#使配置立即生效:
/sbin/sysctl -p
| 四.配置DNS服务器,实现轮询
shell> yum install bind bind-utils
shell> vim /etc/named.conf
|
#安装DNS服务器,并配置named.conf
shell> vim /etc/named.conf
options {
listen-on port 53 { any; };
allow-query { any; };
recursion yes;
#rrset-order表明对bbs.centos.com域中的IN记录使用轮询
rrset-order {
class IN typeA name "bbs.centos.com"order cyclic;
};
};
zone "."IN {
typehint;
file"named.ca";
};
zone "centos.com"IN {
typemaster;
file"named.lij.com";
};
zone "54.16.172.in-addr.arpa"IN {
typemaster;
file"named.172.16.54";
};
#配置正解域
shell> vim /var/named/named.centos.com
$TTL 600
@ IN SOA centos.com. ftp. (
2011080404
3H
15M
1W
1D)
@ IN NS ceontos.com.
centos.com. IN A 10.10.54.150
@ IN MX 10 mail.ceontos.com.
mail.centos.com. IN A 10.10.54.151
bbs.centos.com. IN A 172.16.54.150
bbs.centos.com. IN A 172.16.54.151
#重启
shell> /etc/init.d/named restart
#测试DNS轮询是否生效,通过两次ping
shell> ping bbs.centos.com
PING bbs.centos.com (172.16.54.151) 56(84) bytes of data.
64 bytes from 172.16.54.151: icmp_seq=1 ttl=64 time=0.441 ms
#再次ping
shell> ping bbs.centos.com
PING bbs.centos.com (172.16.54.150) 56(84) bytes of data.
64 bytes from 172.16.54.150: icmp_seq=1 ttl=64 time=0.019 ms
#上面可以看到两次ping的IP并不相同
注意:测试机的DNS服务器需要配置为10.10.54.150这台
| 五.配置两台squid服务器
1.编译安装squid
shell> yum installgcc wget perl gcc-c++ make
shell> cd/tmp
shell> wget http://www.squid-cache.org/Versions/v3/3.1/squid-3.1.19.tar.gz
shell> tarxzf squid-3.1.19.tar.gz
shell> cd squid-3.1.19
shell> ./configure--prefix=/usr/local/squid--enable-gnuregex --disable-carp --enable-async-io=240 --with-pthreads --enable-storeio=ufs,aufs,diskd --disable-wccp --enable-icmp --enable-kill-parent-hack --enable-cachemgr-hostname=localhost --enable-default-err-language=Simplify_Chinese --with-maxfd=65535 --enable-poll --enable-linux-netfilter --enable-large-cache-files --disable-ident-lookups --enable-default-hostsfile=/etc/hosts--with-dl --with-large-files --enable-delay-pools --enable-snmp --disable-internal-dns --enable-underscore -enable-arp-acl
shell> make&& makeinstall
2.创建squid缓存目录,和日志目录
shell> groupadd squid
shell> useradd-g squid -s /sbin/nologinsquid
shell> mkdir/squid/data -p
shell> mkdir/squid/log
shell> chown-R squid.squid /squid
3.编辑squid配置文件,配置其为反向代理模式,负载两台web服务器
|
shell> vim /usr/local/squid/etc/squid.conf
#用户和用户组
cache_effective_user squid
cache_effective_group squid
#主机名
visible_hostname squid1.lij.com
#配置squid为反向代理模式
http_port 172.16.54.150:80 accel vhost vport
#配置squid2为其邻居,当 squid1 在其缓存中没有找到请求的资源时,通过 ICP查询去其邻居中取得缓存
icp_port 3130
cache_peer 172.16.54.151 sibling 80 3130
#配置squid1的两个父节点(web server),originserver参数指明是源服务器, round-robin参数指明squid通过轮询方式将请求分发到其中一台父节点; squid 同时会对这些父节点的健康状态进行检查,如果父节点 down 了,那么 squid 会从剩余的 origin 服务器中抓取数据
cache_peer 172.16.54.200 parent 80 0 originserver round-robin
cache_peer 172.16.54.201 parent 80 0 originserver round-robin
#下面是一些访问控制、日志和缓存目录的设置
cache_mem 128 MB
maximum_object_size_in_memory 4096 KB
maximum_object_size 10240 KB
cache_dir aufs /squid/data 4000 16 512
coredump_dir /squid/data
#日志路径
cache_access_log /squid/logs/access.log
cache_log /squid/logs/cache.log
cache_store_log /squid/logs/store.log
acl localnet src 10.10.54.0/24
http_access allow all
icp_access allow localnet
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern . 0 20% 4320
| 4.squid2上配置和squid1上配置完全一样,只需要修改相关IP,例如
visible_hostname squid2.lij.com
http_port 172.16.54.151:80 accel vhost vport
icp_port 3130
cache_peer 172.16.54.150 sibling 80 3130
注意:两台squid上都要添加hosts记录
shell> vim /etc/hosts
172.16.54.200 squid1.lij.com
172.16.54.201 squid2.lij.com
六.安装三台mysql服务器,并配置为MHA高可用架构
1.MHA介绍:MHA是由日本Mysql专家用Perl写的一套Mysql故障切换方案以保障数据库的高可用性,它的功能是能在0-30s之内实现主 Mysql故障转移(failover),即一旦主服务器宕机,备份机即开始充当master提供服务,这就保证了我们的web服务器可以持续地运作
2..MHA环境搭建过程参考我的另一篇文章:http://3974020.blog.iyunv.com/3964020/1394246(这篇文章 上使用的是四台服务器,一台manager,一台master,两台slave中有一台作为备用master),三台主机也可以实现MHA环境,只需要把 其中一台slave主机兼做manager即可
3.最后搭建的MHA结构
主master:172.16.54.203
slave1:172.16.54.204(备用master,主master当掉之后,slave1充当master继续提供服务)
slave2:172.16.54.205(两个角色,一是作为slave2同步master数据,二是作为manager节点监控主master是否正常)
七.配置web服务器,并安装论坛Discuz
1.web服务器我们选择nginx,首先需要安装LNMP环境,这个略过,下面只给出nginx配置参数,关于nginx性能优化方面的一些参数没有给出
2.shell> vim /usr/local/nginx/conf/nginx.conf
|
#用户,这个需要跟web根目录的用户相同
user apache apache;
worker_processes 2;
error_log logs/error.log;
pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log;
sendfile off;
keepalive_timeout 65;
# gzip on;
server {
listen 80;
server_name bbs.centos.com;
#指定web根目录
root /var/www/bbs/upload;
charset utf-8;
index index.php index.html;
access_log logs/bbs.access.log;
#配置php模块支持
location ~ \.php$ {
fastcgi_pass unix:/var/run/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
include fastcgi_params;
include fastcgi.conf;
}
#nginx状态页,主要用于监控
location /server-status {
stub_status on;
allow all;
access_log off;
}
}
|
3.我们配置的web服务器根目录为/var/www/bbs/upload,首先切换到其上一层目录/var/www/bbs
shell> cd /var/www/bbs
shell> unzip Discuz_X3.0_SC_UTF8.zip
shell> chown apache.apache -R /var/www/bbs
4.浏览器访问http://172.16.54.200 进入Discuz安装程序,首先是错误检查,根据错误提示更改错误,一般都是相关目录权限的问题
5.接下来是要制定Discuz存放数据库的位置,以及数据库读取所用账号,由于之前我们已经搭建起了MHA环境,所以这里数据库我们指定为后面的 master主机(172.16.54.203),一旦master主机当掉,slave1(172.16.54.204)可以继续提供服务
八.测试
1.在测试机上修改DNS服务器地址为10.10.54.150,然后浏览器访问bbs.centos.com测试是否可以访问,然后进行下面步骤
2.测试web服务器:理论上squid服务器会监视后端的web服务器,如果某一台服务器出现故障之后,squid就会把用户请求代理到另外一台服务器,测试中可以当掉一台web服务器
3.测试mysql服务器:mysql的MHA架构可以实现故障转移,测试中可以当掉master主机,以查看是否成功切换到slave1上,以及论坛是否可以访问
参考文章:
http://www.centos.bz/2012/05/squid-reverse-proxy-deploy/
http://rfyiamcool.blog.iyunv.com/1030776/915092
本文出自 “fightering-cluter” 博客,请务必保留此出处http://3974020.blog.iyunv.com/3964020/1393353
http://coolio.blog.iyunv.com/680971/1396288
squid3.4编译安装
squid反向代理工作原理:
squid 反向代理的工作原理的基础上,指出反向代理技术在提高网站访问速度,增强网站可用性、安全性方面有很好用途。作者在具体实验环境下,利用 DNS 轮询和 Squid 反向代理技术,实现了网站的负载均衡,从而提高了网站可用性和可靠性。
现在有许多大型的门户网站如 SINA 都采用 squid 反向代理技术来加速网站的访问速度,可将不同的 URL 请求分发到后台不同的 WEB 服务器上,同时互联网用户只能看到反向代理服务器的地址,加强了网站的访问安全。
squid安装:
系统为centos5.8
安装依赖包:yum install -y gcc gcc-c++ make perl perl-devel
解压文件:tar zxvf squid-3.4.2-20140112-r13074.tar
安装: ./configure --prefix=/usr/local/squid
make && make install
建立squid用户和组:groupadd squid #建立用户
useradd -g squid -s /sbin/nologin squid #建立组并把用户添加到组 但不能登陆系统
添加squid用户和组到指定文件夹权限:
chown -R squid /usr/local/squid/var/logs/ /usr/local/squid/var/cache/
#squid需要用户有权访问var/logs和var/cache两个文件夹
配置squid.conf:
cache_effective_user squid #使用squid用户启动squid
cache_effective_group squid #使用squid组启动squid
注:如使用root启动squid为--cache_effective_user nobody 不能添加squid组、用户和文件夹权限
cache_effective_group nobody
设定 squid 的主机名:
visible_hostname 本机IP地址 #如无此项 squid 将无法启动
设定squid监听端口:
http_port 80 accel vhost vport
#这是客户访问网站的端口,最好设置为80,否则客户访问需要添加端口号;
#vport指的是基于IP地址和基于端口的
#vhost指的是所采用的虚拟主机的方式,必须要加.否则将无法将主机头转发 至后端服务器,访问时就会出现无法找到主机头的错误
#accel为加速模式
定义不同的父节点:
cache_peer 种子机的ip地址 parent 80 0 no-query originserver name=种子机的名称
#no-query originserver 参数指明是源服务器
#parent表示源服务器端口
#如需要轮询服务器同步数据,可添加round-robin
指定缓存文件路径:
cache_dir ufs /data/cache 33216 32 256
cache_dir ufs /data/cache1 33216 32 256
设置acl规则:
acl all src 0.0.0.0/0.0.0.0
http_access allow all
# 允许所有用户访问
设置日志文件:
logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %<st "%{Referer}>h" "%{User-Agent}>h" %Ss:%Sh
access_log /usr/local/squid3.4/var/logs/access.log
pid_filename /usr/local/squid3.4/var/logs/squid.pid
cache_log /usr/local/squid3.4/var/logs/cache.log
对 squid 的一些优化:
maximum_object_size 10240 KB ### 能缓存的最大对象为 10M
maximum_object_size_in_memory 512 KB ### 内存中缓存的最大对象 512K
cache_mem 256 MB ###squid 用于缓存的内存量,最后进行保存
quick_abort_min -1 KB
refresh_pattern -i \.jpg$ 3 20% 25 reload-into-ims
refresh_pattern -i \.xml$ 3 20% 15 reload-into-ims
request_timeout 30 seconds
logfile_rotate 7
# Leave coredumps in the first cache dir
coredump_dir /usr/local/squid/var/cache/squid
# Add any of your own refresh_pattern entries above these.
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern . 0 20% 4320
检查squid配置文件是否正确:/usr/local/squid/sbin/squid –k parse
生成缓存目录:/usr/local/squid/sbin/squid –N -z -d 1
启动squid:/usr/local/squid/sbin/squid
停止squid:/usr/local/squid/sbin/squid -k shutdown
参考文件: /usr/local/squid/etc squid.conf.documented #配置信息
-------------------------------------------------------------------------------------------------------------------
常用的squidclient查询语句如下(/usr/local/squid/bin):
#这里-p后面的是端口,根据自己具体的情况而定。如果是3128端口,就把上面的80换成3128就可以了
squidclient -p 80 mgr:info #取得squid运行状态信息:
squidclient -p 80 mgr:mem #取得squid内存使用情况:
squidclient -p 80 mgr:objects #取得squid已经缓存的列表,使用时要小心,可能会造成squid崩溃:
squidclient -p 80 mgr:diskd #取得squid的磁盘使用情况:
squidclient -p 80-m PURGE http://www.gznet.com #强制更新某个url,即清理某连接的squid
--------------------------------------------------------------------------------------------------------------------
参考文章:http://fuquanjun.blog.iyunv.com/5820068/1339465
http://www.doc88.com/p-681406154785.html
http://www.52-life.net/N_Windows_squid.htm
http://www.squid-cache.org/Versions/v2/2.6/cfgman/
如发现问题,请留言指正,感谢阅读!!
http://os.iyunv.com/art/201407/446439.htm
http://jedy82.blog.iyunv.com/425872/1352128
Centos 6.5下squid 3.4 安装 (反向代理)
类别:原创 服务器
第一:说明,软件说明,和安装的目的
架设基于linux下的反向代理服务器,使用反向代理对网站进行加速。
squid 3.* 和squid 2.7 在配置文件上有很多地方有变动,配置时请注意
第二:本例操作环境
所使用的系统环境为 Centos 6.5 64位操作系统
[iyunv@jedy ~]# uname -a
Linux jedy.com 2.6.32-431.3.1.el6.x86_64 #1 SMP Fri Jan 3 21:39:27 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
[iyunv@jedy ~]# more /etc/redhat-release
CentOS release 6.5 (Final)
[iyunv@jedy ~]#
第三:所需要的软件包如下
squid-3.4.2.tar.gz http://www.squid-cache.org/Versions/v3/3.4/squid-3.4.2.tar.gz
第四:安装、配置
[iyunv@jedy ~]# rpm –qa | grep squid
[iyunv@jedy ~]# rpm –e squid
[iyunv@jedy ~]# cd /usr/local/src
[iyunv@jedy src]# tar zxvf /software/squid-3.4.2.tar.gz
[iyunv@jedy src]# cd squid-3.4.2/
[iyunv@jedy squid-3.4.2]# ./configure --prefix=/usr/local/squid --enable-dlmalloc --enable-snmp --with-pthreads --enable-epoll --disable-internal-dns --enable-removal-policies=heap,lru --enable-delay-pools --enable-storeio=aufs,diskd,ufs --with-maxfd=65535
[iyunv@jedy src]# make
[iyunv@jedy src]# make install
[iyunv@jedy src]# useradd -r -s /sbin/nologin squid
[iyunv@jedy src]#cd
[iyunv@jedy ~]# ln –sv /usr/local/squid/etc /etc/squid
[iyunv@jedy ~]# mkdir /var/cache/squid /var/log/squid
[iyunv@jedy ~]# chmod 777 /var/cache
[iyunv@jedy ~]# chmod 777 /var/log/squid
[iyunv@jedy ~]# chown squid.squid /var/cache
[iyunv@jedy ~]# chown squid.squid /var/log/squid
[iyunv@jedy ~]# more /etc/squid/squid.conf | grep –v “#”| grep –v ^$
########## Base control ##########
cache_mgr admin@jedy.com \\ 管理员邮箱
visible_hostname squid.jedy.com \\ 主机名
http_port 0.0.0.0:80 accel vhost \\ 侦测的端口 注意 在squid 3.0中 这里是不能加 http11的
icp_port 0
cache_dir ufs /var/cache 2048 32 256 \\ 定义squid的cache存放路径 、cache目录容量(单位M)、一级缓存目录数量、二级缓存目录数量
logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %<st "%
{Referer}>h" "%{User-Agent}>h" %Ss:%Sh \\ log文件日志格式
access_log /var/log/squid/access_log combined \\ log文件存放路径 和日志格式
cache_log /var/log/squid/cache_log
cache_store_log none
logfile_rotate 60 \\ log轮循 60天
error_directory /usr/local/squid/share/errors/zh-cn \\ 错误页面的语言
unlinkd_program /usr/local/squid/libexec/unlinkd \\ 指定文件删除进程的完整路径 我也没弄懂
strip_query_terms off \\在日志中记录URL的完整路径包含“?”后面的参数。
#cache_vary on \\支持http 1.1的动态压缩
acl apache rep_header Server ^Apache
#broken_vary_encoding allow apache
########## Performance control ##########
cache_mem 1024 MB \\额外提供给squid使用的内存,squid的内存总占用为 X * 10+15+“cache_mem”其是 X为squid的cache占用的容量(以GB为单位)
cache_swap_low 90
cache_swap_high 95 \\ cache目录的限值,超过总容量的85%时会自动清理
maximum_object_size 4096 KB
minimum_object_size 0 KB
maximum_object_size_in_memory 2048 KB \\ 与内存有关的参数
ipcache_size 2048 \\ 缓存dns的正反向解析
ipcache_low 90
ipcache_high 95
cache_replacement_policy lru
memory_replacement_policy lru
#log_ip_on_direct on
log_mime_hdrs off
request_header_max_size 64 KB
request_body_max_size 0 KB
negative_ttl 5 minutes \\ 错误页面缓存时间
connect_timeout 1 minute
read_timeout 1 minutes
request_timeout 1 minutes
client_lifetime 30 minutes
half_closed_clients on
#maximum_single_addr_tries 1
设定每个页面缓存的时间
<refresh_pattern> <页面类型> <最小时间> <百分比> <最大时间>
refresh_pattern -i \.htm$ 1440 90% 129600 reload-into-ims
refresh_pattern -i \.html$ 1440 90% 129600 reload-into-ims
refresh_pattern -i \.shtml$ 1440 90% 129600 reload-into-ims
refresh_pattern -i \.shtm$ 1440 90% 129600 reload-into-ims
refresh_pattern -i \.xml$ 1440 90% 129600 reload-into-ims
refresh_pattern -i \.jpg$ 1440 90% 129600 reload-into-ims
refresh_pattern -i \.jpeg$ 1440 90% 129600 reload-into-ims
refresh_pattern -i \.png$ 1440 90% 129600 reload-into-ims
refresh_pattern -i \.gif$ 1440 90% 129600 reload-into-ims
refresh_pattern -i \.bmp$ 1440 90% 129600 reload-into-ims
refresh_pattern -i \.css$ 1440 90% 129600 reload-into-ims
refresh_pattern -i \.js$ 1440 90% 129600 reload-into-ims
refresh_pattern -i \.swf$ 1440 90% 129600 reload-into-ims
refresh_pattern -i \.doc$ 1440 90% 129600 reload-into-ims
refresh_pattern -i \.ppt$ 1440 90% 129600 reload-into-ims
refresh_pattern -i \.xls$ 1440 90% 129600 reload-into-ims
refresh_pattern -i \.pdf$ 1440 90% 129600 reload-into-ims
refresh_pattern -i \.cab$ 1440 90% 129600 reload-into-ims
refresh_pattern -i \.exe$ 1440 90% 129600 reload-into-ims
refresh_pattern -i \.zip$ 1440 90% 129600 reload-into-ims
refresh_pattern -i \.dll$ 1440 90% 129600 reload-into-ims
refresh_pattern -i \.rar$ 1440 90% 129600 reload-into-ims
refresh_pattern -i \.zip$ 1440 90% 129600 reload-into-ims
refresh_pattern . 0 0% 0
acl purge method PURGE
acl QUERY urlpath_regex cgi-bin .php .cgi .asp .jsp .do
##acl all src all \\squid 3.0后 默认设置好了,不用另加,否则起不来
acl testip src 127.0.0.1/32 192.168.10.0/24
acl testdst dstdomain jedy.com .baidu.com .sina.com
###### Reverse proxy###########
<cache_peer> <主机名称> <类别> <http_port> <icp_port> <其它参数>
cache_peer 192.168.10.10 parent 80 0 no-query originserver name=test1
cache_peer 192.168.10.20 parent 80 0 no-query originserver name=test2
cache_peer 192.168.10.30 parent 80 0 no-query originserver name=test3
cache_peer_domain test1 test.jedy.com bbs.jedy.com
cache_peer_domain test2 .baidu.com
cache_peer_domain test3 .sina.com
cache_peer_domain njdxpnum pnum.uc55.com
从客户端过来的请求,如果是访问test.jedy.com bbs.jedy.com, 则Squid向 Server 192.168.10.10的端口80发送请求
从客户端过来的请求,如果是访问 baidu.com, 则Squid向 Server 192.168.10.20的端口80发送请求
从客户端过来的请求,如果是访问 sina.com, 则Squid向 Server 192.168.10.30的端口80发送请求
<cache_peer_access> <上层 Proxy > <allow|deny> <acl名称>
cache_peer_access test1 allow all
cache_peer_access test2 allow all
cache_peer_access test3 allow testip
允许所有人访问 test1(192.168.10.10) test2 (192.168.10.20)
只允许 testip(192.168.10.0/24)访问test3 (192.168.10.30)
########## Access control ############
http_access allow QUERY
http_access allow purge master
http_access allow testdst \\ 允许testdst 使用squid进行代理
http_access deny all
cache deny QUERY
hierarchy_stoplist cgi-bin ?
acl CactiServer src 58.210.11.194
acl SNMP snmp_community public \\ 允许snmp通过
snmp_port 3401
snmp_access allow SNMP CactiServer
snmp_access deny all
[iyunv@jedy ~]#
[iyunv@jedy ~]# /usr/local/squid/sbin/squid –zX \\ 初始化 squid
[iyunv@jedy ~]# /usr/local/squid/sbin/squid –s \\ 启动 squid
[iyunv@jedy ~]# netstart –tlnp | grep 查看服务端口状态 如果有80 说明服务启动成功
[iyunv@jedy ~]# echo “/usr
/local/squid/sbin/squid –s &” >> /etc
/rc.local \\ 开机自动启动,我们后面会说到使用服务器进程启动squid,如果使用服务器进行启动 这一
条可以不加
至此 关于squid的安装配置部分结束。
第五:测试测试连接和认证
# 更改本地测试机的hosts文件,加入准备测试的网站如:www.uc55.com 解析到squid服务器ip地址
如果在本机浏览器里能成功访问 www.uc55.com 并查看数据包头从squid请求的数据 那说明反向代理squid成功
修改dns服务器的A记录,将需代理的网站部分指向 此代理服务器。
第六:补充知识
1.使用服务器进程启动squid
新建squid 服务器进程
[iyunv@jedy ~]# vim /etc/init.d/squid
################################脚本开始################################
#!/bin/bash
# squid This shell script takes care of starting and stopping
# Squid Internet Object Cache
#
# chkconfig: - 90 25
# description: Squid - Internet Object Cache. Internet object caching is \
# a way to store requested Internet objects (i.e., data available \
# via the HTTP, FTP, and gopher protocols) on a system closer to the \
# requesting site than to the source. Web browsers can then use the \
# local Squid cache as a proxy HTTP server, reducing access time as \
# well as bandwidth consumption.
# pidfile: /usr/local/squid/var/logs/squid.pid
# config: /etc/squid/squid.conf
PATH=/usr/bin:/sbin:/bin:/usr/sbin
export PATH
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# don't raise an error if the config file is incomplete
# set defaults instead:
SQUID_OPTS=${SQUID_OPTS:-"-D"}
SQUID_PIDFILE_TIMEOUT=${SQUID_PIDFILE_TIMEOUT:-20}
SQUID_SHUTDOWN_TIMEOUT=${SQUID_SHUTDOWN_TIMEOUT:-100}
# determine the name of the squid binary
[ -f /usr/local/squid/sbin/squid ] && SQUID=/usr/local/squid/sbin/squid
prog="$SQUID"
# determine which one is the cache_swap directory
CACHE_SWAP=`sed -e 's/#.*//g' /etc/squid/squid.conf | \
grep cache_dir | awk '{ print $3 }'`
[ -z "$CACHE_SWAP" ] && CACHE_SWAP=/var/spool/squid
RETVAL=0
start() {
ulimit -HSn 65535
#check if the squid conf file is present
if [ ! -f /etc/squid/squid.conf ]; then
echo "Configuration file /etc/squid/squid.conf missing" 1>&2
exit 6
fi
. /etc/sysconfig/squid.sh
# don't raise an error if the config file is incomplete.
# set defaults instead:
SQUID_OPTS="-s -f/etc/squid/squid.conf"
SQUID_PIDFILE_TIMEOUT=${SQUID_PIDFILE_TIMEOUT:-20}
SQUID_SHUTDOWN_TIMEOUT=${SQUID_SHUTDOWN_TIMEOUT:-100}
if [ -z "$SQUID" ]; then
echo "Insufficient privilege" 1>&2
exit 4
fi
for adir in $CACHE_SWAP; do
if [ ! -d $adir/00 ]; then
echo -n "init_cache_dir $adir... "
$SQUID -z -F -D >> /var/log/squid/squid.out 2>&1
fi
done
echo -n $"Starting $prog: "
$SQUID $SQUID_OPTS >> /var/log/squid/squid.out 2>&1
RETVAL=$?
if [ $RETVAL -eq 0 ]; then
timeout=0;
while : ; do
[ ! -f /usr/local/squid/var/logs/squid.pid ] || break
if [ $timeout -ge $SQUID_PIDFILE_TIMEOUT ]; then
RETVAL=1
break
fi
sleep 1 && echo -n "."
timeout=$((timeout+1))
done
fi
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/squid
[ $RETVAL -eq 0 ] && echo_success
[ $RETVAL -ne 0 ] && echo_failure
echo
return $RETVAL
}
stop() {
. /etc/sysconfig/squid.sh
# don't raise an error if the config file is incomplete.
# set defaults instead:
SQUID_SHUTDOWN_TIMEOUT=${SQUID_SHUTDOWN_TIMEOUT:-100}
echo -n $"Stopping $prog: "
$SQUID -k check >> /var/log/squid/squid.out 2>&1
RETVAL=$?
if [ $RETVAL -eq 0 ] ; then
$SQUID -k shutdown &
rm -f /var/lock/subsys/squid
timeout=0
while : ; do
[ -f /usr/local/squid/var/logs/squid.pid ] || break
if [ $timeout -ge $SQUID_SHUTDOWN_TIMEOUT ]; then
echo
return 1
fi
sleep 2 && echo -n "."
timeout=$((timeout+2))
done
echo_success
echo
else
echo_failure
if [ ! -e /var/lock/subsys/squid ]; then
RETVAL=0
fi
echo
fi
return $RETVAL
}
reload() {
. /etc/sysconfig/squid.sh
# don't raise an error if the config file is incomplete.
# set defaults instead:
SQUID_OPTS=${SQUID_OPTS:-"-D"}
$SQUID -k reconfigure -f /etc/squid/squid.conf
}
restart() {
stop
start
}
condrestart() {
[ -e /var/lock/subsys/squid ] && restart || :
}
rhstatus() {
status $SQUID && $SQUID -k check
}
probe() {
return 0
}
case "$1" in
start)
start
;;
stop)
stop
;;
reload)
reload
;;
restart)
restart
;;
condrestart)
condrestart
;;
status)
rhstatus
;;
probe)
exit 0
;;
*)
echo $"Usage: $0 {start|stop|status|reload|restart|condrestart}"
exit 2
esac
exit $?
################################脚本结束################################
2 .新建squid.sh 服务器进程
[iyunv@jedy ~]# vim /etc/sysconfig/squid.sh 其实我也不知道这个脚本是做什么用的,但是如果没有这个脚本 启动squid时会报错
################################脚本开始################################
# default squid options
# -D disables initial dns checks. If you most likely will not to have an
# internet connection when you start squid, uncomment this
SQUID_OPTS="-D"
# Time to wait for Squid to shut down when asked. Should not be necessary
# most of the time.
SQUID_SHUTDOWN_TIMEOUT=100
################################脚本结束################################
3. 启动 squid
[iyunv@jedy ~]#services squid start
4.加入开机自动启动
[iyunv@jedy ~]#chkconfig –add squid
[iyunv@jedy ~]#chkconfig –level 2345 squid on
5. 查看服务端口状态
[iyunv@jedy ~]#netstart -tlnp | grep squid 如果有80 说明服务启动成功
6. 定期备份日志
[iyunv@jedy ~]# mkdir /var/log/squid/bak
[iyunv@jedy ~]# chmod 777 /var/log/squid/bak
[iyunv@jedy ~]# chown squid.squid /var/log/squid/bak
新建备份脚本
[iyunv@jedy ~]# vim /usr/local/squid/squidlogbak.sh
################################脚本开始################################
#!/bin/sh
date=`date +%Y%m%d`
cd /var/log/squid/
# rename the current log file without interrupting the logging process
mv access_log access_log.sz.$date
# tell Squid to close the current logs and open new ones
/usr/local/squid/sbin/squid -k rotate
# give Squid some time to finish writing swap.state files
sleep 5
mv access_log.sz.$date /var/log/squid/bak/
gzip -9 /var/log/squid/bak/access_log.sz.$date
################################脚本结束###############################
[iyunv@jedy ~]#crontab -e
58 23 * * * /usr/local/squid/squidlogbak.sh
[iyunv@jedy ~]#
至此 关于squid的安装配置全部结束。
本文出自 “jedy 网络技术&linux学习” 博客,请务必保留此出处http://jedy82.blog.iyunv.com/425872/1352128
http://www.cnblogs.com/mchina/p/centos-squid-proxy-server.html
CentOS 6.4下Squid代理服务器的安装与配置
一、简介
代理服务器英文全称是Proxy Server,其功能就是代理网络用户去取得网络信息。
Squid是一个缓存Internet 数据的软件,其接收用户的下载申请,并自动处理所下载的数据。当一个用户想要下载一个主页时,可以向Squid 发出一个申请,要Squid 代替其进行下载,然后Squid 连接所申请网站并请求该主页,接着把该主页传给用户同时保留一个备份,当别的用户申请同样的页面时,Squid 把保存的备份立即传给用户,使用户觉得速度相当快。Squid 可以代理HTTP、FTP、GOPHER、SSL和WAIS等协议并且Squid 可以自动地进行处理,可以根据自己的需要设置Squid,使之过滤掉不想要的东西。
1.1 工作流程
当代理服务器中有客户端需要的数据时:
a. 客户端向代理服务器发送数据请求;
b. 代理服务器检查自己的数据缓存;
c. 代理服务器在缓存中找到了用户想要的数据,取出数据;
d. 代理服务器将从缓存中取得的数据返回给客户端。
当代理服务器中没有客户端需要的数据时:
1. 客户端向代理服务器发送数据请求;
2. 代理服务器检查自己的数据缓存;
3. 代理服务器在缓存中没有找到用户想要的数据;
4. 代理服务器向Internet 上的远端服务器发送数据请求;
5. 远端服务器响应,返回相应的数据;
6. 代理服务器取得远端服务器的数据,返回给客户端,并保留一份到自己的数据缓存中。
Squid代理服务器工作在TCP/IP的应用层。
1.2 Squid 分类
按照代理类型的不同,可以将Squid 代理分为正向代理和反向代理,正向代理中,根据实现方式的不同,又可以分为普通代理和透明代理。
- 普通代理:需要客户机在浏览器中指定代理服务器的地址、端口;
- 透明代理:适用于企业的网关主机(共享接入Internet)中,客户机不需要指定代理服务器地址、端口等信息,代理服务器需要设置防火墙策略将客户机的Web访问数据转交给代理服务程序处理;
- 反向代理:是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。
官方地址:http://www.squid-cache.org/
参考文档:http://www.squid-cache.org/Doc/config/
二、系统环境
操作系统:CentOS release 6.4 (Final)
Squid版本:squid-3.1.10-20.el6_5.3.x86_64
SELINUX=disabled
HTTP Service: stoped
三、安装Squid服务
3.1 检查squid软件是否安装
# rpm -qa|grep squid
3.2 如果未安装,则使用yum 方式安装
# yum -y install squid
3.3 设置开机自启动
# chkconfig --level 35 squid on //在3、5级别上自动运行squid服务
四、squid服务器的配置文件说明
squid 的主配置文件是 /etc/squid/squid.conf,所有squid的设定都是在这个文件里配置,下面我们来讲解一下该文件的配置选项。
http_port 3128 //设置监听的IP与端口号
cache_mem 64 MB //额外提供给squid使用的内存,squid的内存总占用为 X * 10+15+“cache_mem”,其中X为squid的cache占用的容量(以GB为单位),
//比如下面的cache大小是100M,即0.1GB,则内存总占用为0.1*10+15+64=80M,推荐大小为物理内存的1/3-1/2或更多。
maximum_object_size 4 MB //设置squid磁盘缓存最大文件,超过4M的文件不保存到硬盘
minimum_object_size 0 KB //设置squid磁盘缓存最小文件
maximum_object_size_in_memory 4096 KB //设置squid内存缓存最大文件,超过4M的文件不保存到内存
cache_dir ufs /var/spool/squid 100 16 256 //定义squid的cache存放路径 、cache目录容量(单位M)、一级缓存目录数量、二级缓存目录数量
logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %<st "%{Referer}>h" "%{User-Agent}>h" %Ss:%Sh //log文件日志格式
access_log /var/log/squid/access.log combined //log文件存放路径和日志格式
cache_log /var/log/squid/cache.log //设置缓存日志
logfile_rotate 60 //log轮循 60天
cache_swap_high 95 //cache目录使用量大于95%时,开始清理旧的cache
cache_swap_low 90 //cache目录清理到90%时停止。
acl localnet src 192.168.1.0/24 //定义本地网段
http_access allow localnet //允许本地网段使用
http_access deny all //拒绝所有
visible_hostname squid.david.dev //主机名
cache_mgr mchina_tang@qq.com //管理员邮箱
关于ACL的知识,大家可以自行百度查阅,其他更多高级选项,请参考官方文档:http://www.squid-cache.org/Doc/config/。
注意:squid2.0 和squid3.0的差别还是很大的,如果配置完,启动squid不正确,请大家多多参考官方文档的相应版本说明。
五、普通代理服务
即标准的、传统的代理服务,需要客户机在浏览器中指定代理服务器的地址、端口。
实验拓扑图如下:
5.1 配置Squid 代理服务器IP地址
将eth1的IP地址修改为200.168.10.1
# ifconfig eth1 200.168.10.1
5.2 编辑squid 主配置文件/etc/squid/squid.conf
http_port 3128
cache_mem 64 MB
maximum_object_size 4 MB
cache_dir ufs /var/spool/squid 100 16 256
access_log /var/log/squid/access.log
acl localnet src 192.168.1.0/24
http_access allow localnet
http_access deny all
visible_hostname squid.david.dev
cache_mgr mchina_tang@qq.com
5.3 初始化
# squid –z
5.4 启动Squid
# /etc/init.d/squid start
5.5 配置Web 服务器
A. 安装Apache
# rpm -qa|grep httpd
# yum -y install httpd
B. 启动Apache并加入开机启动
# /etc/init.d/httpd start
# chkconfig httpd on
C. 创建index.html
# echo "<h1>Squid-Web1/200.168.10.2</h1>" > /var/www/html/index.html
D. 修改Web服务器IP地址
将web服务器的IP地址修改为200.168.10.2
# ifconfig eth0 200.168.10.2
5.6 配置客户端IP地址
5.7 配置浏览器代理
打开浏览器(以IE为例,其他类似),菜单栏 -> 工具 -> Internet 选项 -> 连接 -> 局域网设置 -> 代理服务器,按照以下格式设置。
5.8 测试
测试成功。
5.9 测试错误页面
在Oracle VM VirtualBox里,因为上面手动设置了ip地址,导致外网不能访问,刚好可以测试访问出错的页面。
可以看到在squid 配置文件里设置的参数在错误页面里的显示。
六、透明代理服务
适用于企业的网关主机,客户机不需要指定代理服务器地址、端口等信息,通过iptables将客户机的Web访问数据转交给代理服务程序处理。
实验拓扑图如下:
6.1 修改squid 主配置文件/etc/squid/squid.conf
http_port 3128 transparent
cache_mem 64 MB
maximum_object_size 4 MB
cache_dir ufs /var/spool/squid 100 16 256
access_log /var/log/squid/access.log
acl localnet src 192.168.1.0/24
http_access allow localnet
http_access deny all
visible_hostname squid.david.dev
cache_mgr mchina_tang@qq.com
在http_port 3128 后添加transparent 关键字。
6.2 reload
reload 让上面的配置生效。
# /etc/init.d/squid reload
6.3 添加iptables规则,把内部的http请求重定向到3128端口
A. 启动iptables 服务
# /etc/init.d/iptables start
B. 清除现有iptables filter 表规则
# iptables -F
C. 保存iptables 设置
# /etc/init.d/iptables save
D. 查看nat 表设置
# iptables -t nat -L -n
E. 在nat表中新增一条规则
# iptables -t nat -I PREROUTING -i eth0 -s 192.168.1.0/24 -p tcp --dport 80 -j REDIRECT --to-port 3128
F. 保存
G. 设置iptables 开机启动
# chkconfig iptables on
6.4 修改客户端IP地址
将默认网关设置为squid 服务器的内网ip地址。
6.5 在浏览器中,取消代理设置
6.6 测试
透明代理测试成功。
七、反向代理服务
为Internet用户访问企业Web站点提供缓存加速。
实验拓扑图如下:
7.1 关闭防火墙
# /etc/init.d/iptables stop
7.2 修改Web Server 主页
Web1:
# echo "<h1>Squid-Web1/192.168.1.18</h1>" > /var/www/html/index.html
Web2:
# echo "<h1>Squid-Web1/192.168.1.19</h1>" > /var/www/html/index.html
7.3 配置squid
http_port 80 accel vhost
http_access allow all
cache_peer 192.168.1.18 parent 80 0 originserver round-robin weight=1
cache_peer 192.168.1.19 parent 80 0 originserver round-robin weight=1
visible_hostname squid.david.dev
cache_mgr mchina_tang@qq.com
7.4 启动Squid服务
squid启动失败,因为上面设定了squid的监听端口是80,和系统的http服务冲突,所以要将http服务停掉。
7.5 squid 启动失败,将系统开机自启动的apache服务关闭。
7.6 测试
squid 采用了round-robin,所以客户端的访问将轮询两台web服务器,采用 "Ctrl + F5" 来深度刷新测试。
Web1:
Web2:
查看squid 的访问日志。
八、实际应用
下面实验将模拟通过不同的域名访问不同的机器,简单实现企业应用中的负载均衡。客户端在浏览器地址栏中输入www.squid.dev,将访问192.168.1.18这台机器,访问bbs.squid.dev,将访问192.168.1.19这台机器。
实验拓扑图如下:
8.1 修改Web Server 主页
Web1:
# echo "<h1>www.squid.dev/192.168.1.18</h1>" > /var/www/html/index.html
Web2:
# echo "<h1>bbs.squid.dev/192.168.1.19</h1>" > /var/www/html/index.html
8.2 配置Squid
http_port 80 accel vhost
http_access allow all
cache_peer 192.168.1.18 parent 80 0 originserver name=www
cache_peer 192.168.1.19 parent 80 0 originserver name=bbs
cache_peer_domain www www.squid.dev
cache_peer_domain bbs bbs.squid.dev
visible_hostname squid.david.dev
cache_mgr mchina_tang@qq.com
8.3 配置客户端
这里可以使用DNS服务来解析,这里我们为了方便,就在hosts 文件里直接指定。
修改C:\Windows\System32\drivers\etc\hosts 文件
8.4 测试网络情况
8.5 测试www.squid.dev
8.6 测试bbs.squid.dev
8.7 查看squid 访问日志
8.8 查看两台服务器的apache 访问日志
# tailf /var/log/httpd/access.log
测试成功。
David Camp
系统运维技术分享:296513821
- 业务合作,请联系作者QQ:562866602
- 我的微信号:mchina_tang
- 给我写信:mchina_tang@qq.com
- 我的地址:江苏·苏州
我们永远相信,分享是一种美德 | We Believe, Great People Share Knowledge...
分类: Linux, Linux Server
标签: Squid, proxy server, 代理服务器, 反向代理, reverse proxy, 代理
http://itxinxi.net/blog/post/242/
1、首先要允许squid进行远程管理
acl cachemgr proto cache_object #允许进行远程管理
acl mgrsvr src 192.168.0.1 #限制远程管理的机器
2、某些管理项目是必须要配置cachemgr_passwd选项才能进行操作的,比如查看当前配置,重载配置等,下面可见性为hidden的都是需要在配置文件里面配置cachemgr_passwd才能进行操作的
./squidclient -p PORT mgr:menu
****************************************************************************
命令 描述 可见性
menu This Cachemanager Menu public
shutdown Shut Down the Squid Process hidden
reconfigure Reconfigure the Squid Process hidden
offline_toggle Toggle offline_mode setting hidden
config Current Squid Configuration hidden
asndb AS Number Database public
carp CARP information public
cbdata Callback Data Registry Contents public
comm_epoll_incoming comm_incoming() stats public
client_list Cache Client List public
squidaio_counts Async IO Function Counters public
diskd DISKD Stats public
dns Dnsserver Statistics public
events Event Queue public
external_acl External ACL stats public
fqdncache FQDN Cache Stats and Contents public
forward Request Forwarding Statistics public
http_headers HTTP Header Statistics public
ipcache IP Cache Stats and Contents public
mem Memory Utilization public
pconn Persistent Connection Utilization Histograms public
redirector URL Redirector Stats public
refresh Refresh Algorithm Statistics public
info General Runtime Information public
service_times Service Times (Percentiles) public
filedescriptors Process Filedescriptor Allocation public
objects All Cache Objects public
vm_objects In-Memory and In-Transit Objects public
openfd_objects Objects with Swapout files open public
io Server-side network read() size histograms public
counters Traffic and Resource Counters public
peer_select Peer Selection Algorithms public
digest_stats Cache Digest and ICP blob public
5min 5 Minute Average of Counters public
60min 60 Minute Average of Counters public
utilization Cache Utilization public
histograms Full Histogram Counts public
active_requests Client-side Active Requests public
store_digest Store Digest public
storedir Store Directory Stats public
store_check_cachable_stats storeCheckCachable() Stats public
store_io Store IO Interface Stats public
store_log_tags Histogram of store.log tags public
server_list Peer Cache Statistics public
non_peers List of Unknown sites sending ICP messages public
**********************************************************************************
我们要进行reconfigure,而reconfigure的可见性标记为hidden,所以要配置cachemgr_passwd
cachemgr_passwd your_password reconfigure
由于我们已经对远程服务器的IP做了限制,所以我们也可以配置不用密码
cachemgr_passwd none reconfigure
3、在配置文件里面允许相应的服务器进行重载操作,其他的禁止,然后先在本机进行重载,然后就可以远程进行重载配置文件了
http_access deny !mgrsvr cachemgr
4、在远程服务器上进行重载(远程的服务器需要有squidclient可执行文件),假设squid运行的端口为80,squid服务器IP为192.168.0.2,并且我们配置为不用密码认证:
./squidclient -h 192.168.0.2 -p 80 mgr:reconfigure
5、此功能对于批量的squid配置文件修改比较有用,其他远程管理功能配置方法类似,此处不再赘述。
运用此方法加上squid2.7或squid3.0以上版本的配置文件的include选项,可以进行squid配置文件的批量更新,简单方便又安全。
................. |
|