Centos5.5配置squid2.6前端反向代理缓存apache2+php服务器

需求:增加访问的命中率

可以直接命令yum -y install squid安装,

完事后,调整squid的配置文件/etc/squid/squid.conf

可参考下面的简单配置方式(源在同一台机器)

   

http_port 3128 vhost #代理服务器使用的端口,使用80端口,就和传统的http服务器一样,用户基本不知道代理服务器的存在,不降低体验。vhost选项是开启虚拟机支持

visible_hostname test_cdn #给代理服务器指定一个名字,如果有多个代理服务器,方便统一管理维护

cache_mgr [email protected] #代理服务器管理员邮箱,出错了方便用户联系你。

error_directory /usr/share/squid/errors/Simplify_Chinese #中文错误语言文件

#http_access allow localhost #这个可以注视掉,因为我们要公开给所有人访问我们的代理服务器

http_access allow all #这个是开启全部访问权限,如果需要更高的权限配置,请参考官方文档,或者squid.conf里自带的英文说明

cache_peer 127.0.0.1 parent 80 0 default #这个是指定http服务器的设置,IP 和端口修改一下就行了。

接下来初始化squid缓存目录

   

cd /usr/sbin
./squid -z

如果输出Creating Swap Directories
就证明初始化成功
接下来调试模式下启动squid,这样做的好处是如果配置出错可以打印出错误信息方便调试

   

./squid -Nd1

如果后台启动,可以./squid -s或者service squid start
ctrl+c退出调试模式并停止squid
如果没有错误信息说明启动成功
按这样的配置就可以开始测试访问了,在FireFox下访问www.youdomain.com:3128
使用firebug查看header响应头信息中是否包含

   

X-Cache-Lookup HIT from test_cdn:3128

信息,如果有说明缓存已经命中,第一次会出现MISS from test_cdn:3128,这个属于正常线程,因为还没有缓存,刷新浏览器就可以看到hit信息
如果刷新以后还是Miss,有很多种情况需要说明了
1.静态页面,这个基本不用改,除非配置错误,否则肯定可以hit,当然也有不命中的情况。
2.动态页面,比如php,asp,jsp等等动态语言。需要手动在程序里面设置header头的Last-Modified和Expires,PHP中代码如下:

   

$expire=180;//3分钟
#header(“Pragma: public”);
#header(“Cache-Control: max-age=”.$expire);
header(“Expires: ” . gmdate(“D, d M Y H:i:s”,time()+$expire) . “GMT”);
header(“Last-Modified: ” . gmdate(“D, d M Y H:i:s”,time()) . “GMT”);

其中,Pragma和Cache-Control两个选项需要说明的是,如果你使用的一些开源框架,或者你自己写的框架之前设置过类似的header头信息,这里需要覆盖掉,或者删除先前的
如果Cache-Control是no-cache以及Pragma是private就算设置了Expires和Last-Modified也不会被squid缓存。



去打赏

您的支持将鼓励我们继续创作!

[微信] 扫描二维码打赏

[支付宝] 扫描二维码打赏

正在跳转到PayPal…

点赞