VMWARE6.0+Centos5.3+Squid2.6构建反向代理环境
2009-10-23日重新更新(反向加速原理请参照另一篇squid2.6文章)
系统环境:XP_SP2+Centos5.3+Vmware6.0+Squid2.6.STABLE21-3.el5+X-manager3.0,为了方便我直接用yum安装squid2.6。
网络拓补为:
Squid服务器:CentOS5.3,IP:192.168.1.103,主机名为squid2.test.com
WebServer1:nginx作web服务器,IP:192.168.1.104,主机名为webserver1.test.com
WebServer2:nginx作web服务器,IP:192.168.1.105,主机名为webserver2.test.com
WebServer3:apache作web服务器 IP:192.168.1.101,主机名为webserver3.test.com
XP作web客户机: IP为192.168.1.188
所有主机均通过路由器连接(即虚拟的Linux服务器采用bridged连接)
因为XP准备作客户机,在XP主机下编辑文件 edit c:\windows\system32\drivers\etc\hosts,省略掉DNS解析过程
192.168.1.103 webserver1.test.com
192.168.1.103 webserver2.test.com
192.168.1.103 werserver3.test.com
Squid主要配置文件如下:
#可视化主机名,必填
visible_hostname squid2.test.com
#监听服务器的80端口,支持域名和IP的虚拟主机
http_port 192.168.1.103:80 vhost
#重点,反向代理的配置,以下内容在原有squid内容文件上添加,其语法如下:
被代理的web的IP父子关系 端口 icp或HTCP端口(0代表禁止)自命名
cache_peer 192.168.1.104 parent 80 0 no-query originserver name=webserver1
cache_peer 192.168.1.105 parent 80 0 no-query originserver name=webserver2
cache_peer 192.168.1.101 parent 80 0 no-query originserver name=webserver3
#所代理的域名
cache_peer_domain webserver1 webserver1.test.com
cache_peer_domain webserver2 webserver2.test.com
cache_peer_domain webserver3 webserver3.test.com
#访问权限的控制
acl all src 0.0.0.0/0.0.0.0
http_access allow all
cache_peer_access webserver1 allow all
cache_peer_access webserver2 allow all
cache_peer_access webserver3 allow all
用xp验证实验结果是可直接在IE中输入http://webserver1.test.com等进行验证,为了方便大家实验,特地贴出我的squid.conf配置文件,省去了大家sed的麻烦,如下:
visible_hostname squid2.test.com
cache_peer 192.168.1.104 parent 80 0 no-query originserver name=webserver1
cache_peer 192.168.1.105 parent 80 0 no-query originserver name=webserver2
cache_peer 192.168.1.101 parent 80 0 no-query originserver name=webserver3
cache_peer_domain webserver1 webserver1.test.com
cache_peer_domain webserver2 webserver2.test.com
cache_peer_domain webserver3 webserver3.test.com
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 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
http_access allow all
icp_access allow all
cache_peer_access webserver1 allow all
cache_peer_access webserver2 allow all
cache_peer_access webserver3 allow all
http_port 192.168.1.103:80 vhost
hierarchy_stoplist cgi-bin ?
access_log /var/log/squid/access.log squid
acl QUERY urlpath_regex cgi-bin \?
cache deny QUERY
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache
coredump_dir /var/spool/squid
※以上实验环境尽量用单网卡模拟真实的生产环境(如CDN系统),因为大家都只有一个公网IP的缘故。由于智能DNS的原因,用户最终解析到的主机就是离自己最近的squid服务器,笔者遇到过因为机房故障导致部分地区用户不能访问公司的web网站的故障,所以对squid服务的监控是非常重要的(这也是一个CDNS点必须有squid冗余的原因之一);
http://hi.baidu.com/yuhongchun027