使用nginx的url_hash提高squid的使用率[原创]

上次我说了使用squid自己的堆叠机制实现提高squid使用率的方法,这次再来说说和nginx搭配使用提高多台squid的使用率,目标当然是使用有限的squid服务器,缓存住更多的静态文件。

首先进到nginx的目录
执行patch -p0 < /path/to/upstream/hash/directory/nginx.patch

然后在安装的时候加上
–add-module=path/to/upstream/hash/directory

我的测试环境vmvare 模拟3个linux
ip分别:nginx 192.168.211.130
squid01 192.168.211.128
squid02 192.168.211.129
测试网站我反向代理www.tgbus.com

这样nginx上编译完成需要配置,内容如下

http {

upstream www.tgbus.com {
server 192.168.211.128;
server 192.168.211.129;
hash $request_uri;
}
server {
listen 80;
server_name www.tgbus.com;
location / {
proxy_pass http: / /bbs.tgbus.com;
}
}
}

然后启动nginx

两个squid就配置成标准的反向代理就可以了,主要配置如下

cache_peer 61.152.242.1 parent 80 0 no -digest no -query originserver name=www
cache_peer_domain www www.tgbus.com

然后启动squid

修改自己电脑的hosts,把www.tgbus.com的ip指向到nginx那台虚拟机的ip上,接下来就可以测试了
打开两台squid的日志,用tail -f的方式,然后访问www.tgbus.com,可以看到两边的日志的内容是不一样的,从其中一台squid的日志中找一条静态文件的url,通过ie 打开,可以发现,这个url的访问只投到同一台squid上,如此实现了,squid缓存的内容不同,从而增加了squid的缓存容量
当然,如果中间只使用一台nginx,自然这台会成为单点而造成隐患,所以可是使用heartbeat做成双机,增加系统的可靠性。