web缓存-squid
安装:
cd /home/root
wget http://www.squid-cache.org/Versions/v3/3.1/squid-3.1.20.tar.gz
tar zxvf squid-3.1.20.tar.gz
cd squid-3.1.20
./configure --prefix=/usr/local/squid
make && make install
这个要说明一下,尝鲜不一定是好事,因为我此时先下了最新版本3.2.1安装,结果就报错,然后才转为安装3.1.20,一点问题都没有。这是经验之谈,最后那个版本号越大的越保险。
配置文档:
http://www.squid-cache.org/Doc/config
结合实际应用场景的原理解释:
http://www.cnblogs.com/PeterBi/archive/2011/03/25/1995228.html
反向代理,负载均衡集群配置:
http://www.ibm.com/developerworks/cn/linux/l-cn-squid/
上面的链接解决了我的疑惑,cache_peer 这个配置既可以配置兄弟代理服务器,也可以配置原始服务器。
看这个配置会明白很多:
cache_effective_user squid cache_effective_group squid ######### 设定 squid 的主机名 , 如无此项 squid 将无法启动 visible_hostname squid1.nlc.gov.cn ############# 配置 squid 为加速模式 ################# http_port 80 accel vhost vport icp_port 3130 ##### 配置 squid2、squid3 为其邻居,当 squid1 在其缓存中没有找到请求的资源时, 通过 ICP 查询去其邻居中取得缓存 cache_peer squid2.ibm.com.cn sibling 80 3130 cache_peer squid3.ibm.com.cn sibling 80 3130 ##### squid1 的三个父节点,originserver 参数指明是源服务器, round-robin 参数指明 squid 通过轮询方式将请求分发到其中一台父节点; squid 同时会对这些父节点的健康状态进行检查,如果父节点 down 了, 那么 squid 会从剩余的 origin 服务器中抓取数据 cache_peer 210.82.118.195 parent 8080 0 no-query originserver round-robin \ name=webServer1 cache_peer 192.168.76.226 parent 8080 0 no-query originserver round-robin \ name=webServer2 cache_peer 192.168.76.227 parent 8080 0 no-query originserver round-robin \ name=webServer3 #### 将 wenjin.cache.ibm.com.cn 域的请求通过 RR 轮询方式转发到三个父节点中的一个 cache_peer_domain webServer1 webServer2 webServer3 wenjin.cache.ibm.com.cn ##### 下面是一些访问控制、日志和缓存目录的设置 acl localnet src 192.168.76.223 192.168.76.224 192.168.76.225 acl all src 0.0.0.0/0.0.0.0 http_access allow all icp_access allow localnet cache_log /usr/local/squid/var/logs/cache.log access_log /usr/local/squid/var/logs/access.log squid cache_dir ufs /usr/local/squid/var/cache/ 1000 16 256 ####### 对 squid 的一些优化 ############### maximum_object_size 10240 KB ### 能缓存的最大对象为 10M maximum_object_size_in_memory 512 KB ### 内存中缓存的最大对象 512K cache_mem 256 MB ###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,并以后台运行的方式启动它。
其实这种方式打印的就是cache.log的内容
这前三步是验证你是否能运行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脚本........
关于配置问题:
#设置cache 内存大小为1G
cache_mem 1000 MB
#设置cache_dir 地址,第一个数字参数不能小于cache_mem设置的大小,否则会出警告“WARNING cache_mem is larger than total disk cache space!”,所以设为1000。16,256表示第一级和第二级目录。设置完了需用 squid -z来使cache目录生效。
cache_dir ufs /var/spool/squid 1000 16 256
注意
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
/16不是指0-16,16是指netmask
测试:
例如我有个应用在局域网192.168.0.2:10080/appweb/
我这样配置
cache_peer 192.168.0.2 parent 10080 no-query originserver
那么我将我的浏览器启用代理,将其指向我配置的squid服务器和对应端口。
嘿嘿,访问的其实是192.168.0.2:10080/appweb/
因为这里配置缓存服务器是192.168.0.2:10080
然而要注意squid默认只是缓存get请求,如果www.google.com/appweb/有个post的ajax请求www.google.com/appweb/ajax的话,squid还是会找实际的www.google.com/appweb/ajax的。
查看日志:
tail -f /usr/local/squid/var/logs/access.log
日志意义:
http://wiki.squid-cache.org/SquidFaq/SquidLogs#access.log
http://blog.csdn.net/starxu85/article/details/3256469
发现日志里一个HIT也没有,晕!倒是有些TCP_REFRESH_UNMODIFIED/304
从浏览器中看,似乎TCP_REFRESH_UNMODIFIED/304对应的资源是命中的。X-Cache HIT from xxx.xxx.COM
搞不懂。
squid命中又有很多因素,它和http 请求状态(头部信息)有很大关系,另外带参数的get请求也是默认不缓存的。
另外测试squid,也可以配置一个dns服务器,然后使用浏览器来访问测试。
参见DNS server配置 http://blog.ureshika.com/archives/896.html。
参见:
http://blog.51yip.com/server/638.html squid cache 服务器端的安装,配置
http://blog.51yip.com/apachenginx/898.html apache利用mod_cache缓存图片等
http://blog.51yip.com/cache/618.html varnish cache 反向代理服务器和http加速器的安装和配置
http://www.cnblogs.com/sxwgf/archive/2012/03/10/2389470.html 浅谈Squid在图片存储架构中的应用
http://os.51cto.com/art/201009/225813.htm 巧用Squid的ACL和访问列表实现高效访问控制