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服务器和对应端口。

那么我访问www.google.com/appweb/

嘿嘿,访问的其实是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和访问列表实现高效访问控制


Total views.

© 2013 - 2024. All rights reserved.

Powered by Hydejack v6.6.1