从下列地址下载SquidNT (http://squid.acmeconsulting.it/download/dl-squid.html)。选择2.5.STABLE14-NT Delay Pools 版本,以下配置是针对2.5版的Squid,2.6版的配置略有不同。
将压缩包解压缩到C:\Squid。将文件C:\Squid\etc\squid.conf.default另存为C:\Squid\etc\squid.conf。
现有如下环境:两台WEB服务器,服务器A和服务器B,分别拥有2个独立的公网IP。服务器A上准备安装反向代理,并且要保留服务器A上原有的IIS服务。反向代理在绑定在80端口,通过服务器A的80端口可以访问服务器A和服务器B上的WEB服务。现有如下两种解决方案:
1、服务器A上,将SquidNT运行在80端口,WEB服务运行在81端口。但是这样会导致WEB服务器Redirect的时候暴露真实端口影响正常访问。当访问http://target/path,会跳转成http://target:81/path/。
2、将Squid和IIS分别绑定到不同的IP,Squid运行在公网IP上,IIS站点运行在127.0.0.1上。但是IIS5.0有个BUG,就是不管你设置站点绑定到什么IP,他都会抢先占绑定所有的IP地址。所以必须让Squid先于IIS运行,先于IIS运行在127.0.0.1:80上。
现在采用第二种方案,并通过修改注册表将Squid设置为IIS的Dependence服务,使得Squid先于IIS启动。
打开配置文件Squid.conf,进行下面的设置:
httpd_accel_host virtual #因为要代理多个WEB服务器,所以开启虚拟主机功能
httpd_accel_port 80
httpd_accel_with_proxy off #关闭正常代理功能
httpd_accel_uses_host_header on
http_port 61.121.xxx.60:80 #反向代理监听端口,帮定到公网IP
icp_port 0 #关闭icp
htcp_port 0 #关闭htcp
snmp_port 0 #关闭snmp
hosts_file c:/squid/etc/hosts.conf #设置hosts文件进行方向代理的域名解析
hosts.conf格式如下:
IP1 DNSName1
IP2 DNSName2