设为首页 收藏本站
查看: 2019|回复: 0

[经验分享] 重建磁盘,重建缓存;命中率;squid编译在centos

[复制链接]

尚未签到

发表于 2015-9-3 09:20:50 | 显示全部楼层 |阅读模式
  .....
  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文件。

DSC0000.jpg
(点击查看大图)图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 服务器的负载,又提高整个网站的性能和安全性。
  
DSC0001.jpg
  
  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 %&gt;a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %<st "%
{Referer}>h" "%{User-Agent}&gt;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&gt;&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&gt;&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 &gt;&gt; /var/log/squid/squid.out 2&gt;&1
fi
done
echo -n $"Starting $prog: "
$SQUID $SQUID_OPTS &gt;&gt; /var/log/squid/squid.out 2&gt;&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 &gt;&gt; /var/log/squid/squid.out 2&gt;&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. 代理服务器取得远端服务器的数据,返回给客户端,并保留一份到自己的数据缓存中。
DSC0002.jpg
  Squid代理服务器工作在TCP/IP的应用层。
DSC0003.jpg
  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
DSC0004.gif
  3.3 设置开机自启动
  # chkconfig --level 35 squid on             //在3、5级别上自动运行squid服务
  四、squid服务器的配置文件说明
  squid 的主配置文件是 /etc/squid/squid.conf,所有squid的设定都是在这个文件里配置,下面我们来讲解一下该文件的配置选项。




DSC0005.jpg
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 %&gt;a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %<st "%{Referer}>h" "%{User-Agent}&gt;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不正确,请大家多多参考官方文档的相应版本说明。
  五、普通代理服务
  即标准的、传统的代理服务,需要客户机在浏览器中指定代理服务器的地址、端口。
  实验拓扑图如下:
DSC0006.jpg
  5.1 配置Squid 代理服务器IP地址
  将eth1的IP地址修改为200.168.10.1
  # ifconfig eth1 200.168.10.1
DSC0007.jpg
  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
DSC0008.jpg
  5.4 启动Squid
  # /etc/init.d/squid start
DSC0009.jpg
  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
DSC00010.jpg
  5.6 配置客户端IP地址
DSC00011.jpg
  5.7 配置浏览器代理
  打开浏览器(以IE为例,其他类似),菜单栏 -> 工具 -> Internet 选项 -> 连接 -> 局域网设置 -> 代理服务器,按照以下格式设置。
DSC00012.jpg
  5.8 测试
DSC00013.jpg
  测试成功。
  5.9 测试错误页面
  在Oracle VM VirtualBox里,因为上面手动设置了ip地址,导致外网不能访问,刚好可以测试访问出错的页面。
DSC00014.jpg
  可以看到在squid 配置文件里设置的参数在错误页面里的显示。
  六、透明代理服务
  适用于企业的网关主机,客户机不需要指定代理服务器地址、端口等信息,通过iptables将客户机的Web访问数据转交给代理服务程序处理。
  实验拓扑图如下:
DSC00015.jpg
  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
DSC00016.jpg
  B. 清除现有iptables filter 表规则
  # iptables -F
DSC00017.jpg
  C. 保存iptables 设置
  # /etc/init.d/iptables save
DSC00018.jpg
  D. 查看nat 表设置
  # iptables -t nat -L -n
DSC00019.jpg
  E. 在nat表中新增一条规则
  # iptables -t nat -I PREROUTING -i eth0 -s 192.168.1.0/24 -p tcp --dport 80 -j REDIRECT --to-port 3128
DSC00020.jpg
  F. 保存
DSC00021.jpg
  G. 设置iptables 开机启动
  # chkconfig iptables on
  6.4 修改客户端IP地址
  将默认网关设置为squid 服务器的内网ip地址。
DSC00022.jpg
  6.5 在浏览器中,取消代理设置
DSC00023.jpg
  6.6 测试
DSC00024.jpg
  透明代理测试成功。
  七、反向代理服务
  为Internet用户访问企业Web站点提供缓存加速。
  实验拓扑图如下:
DSC00025.jpg
  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服务
DSC00026.jpg
  squid启动失败,因为上面设定了squid的监听端口是80,和系统的http服务冲突,所以要将http服务停掉。
  7.5 squid 启动失败,将系统开机自启动的apache服务关闭。
DSC00027.jpg
  7.6 测试
  squid 采用了round-robin,所以客户端的访问将轮询两台web服务器,采用 "Ctrl + F5" 来深度刷新测试。
  Web1:
DSC00028.jpg
  Web2:
DSC00029.jpg
  查看squid 的访问日志。
DSC00030.jpg
  八、实际应用
  下面实验将模拟通过不同的域名访问不同的机器,简单实现企业应用中的负载均衡。客户端在浏览器地址栏中输入www.squid.dev,将访问192.168.1.18这台机器,访问bbs.squid.dev,将访问192.168.1.19这台机器。
  实验拓扑图如下:
DSC00031.jpg
  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 文件
DSC00032.jpg
  8.4 测试网络情况
DSC00033.jpg
  8.5 测试www.squid.dev
DSC00034.jpg
  8.6 测试bbs.squid.dev
DSC00035.jpg
  8.7 查看squid 访问日志
DSC00036.jpg
  8.8 查看两台服务器的apache 访问日志
  # tailf /var/log/httpd/access.log

  测试成功。
  

  David Camp


  • 技术交流,请加QQ群:
  系统运维技术分享: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配置文件的批量更新,简单方便又安全。   
  
  
  
  
  
  
  
  
  .................

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-108917-1-1.html 上篇帖子: squid;Date与Expires;refresh_pattern 下篇帖子: Squid使用User Agent过滤禁止迅雷
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表