如何禁止Socket Pooling
Socket pooling是微软IIS服务的一个侦听IP的问题,当你在IIS管理器里面选择Web服务器侦听的IP时,就算你选择了单个IP,但是IIS的这个Web站点还是会侦听在所有的IP上。例如,我的网关计算机上面有IIS服务,然后有2个IP(192.168.0.1,62.239.x.x),那么IIS的默认站点是会绑定在这两个IP上,就算你在只是选择侦听他们中的一个,如192.168.0.1,但是IIS还是占用了另外一个62.239.x.x的对应端口。这对于接在多个网络的计算机是一种潜在的安全风险,而且也导致一些位于网关计算机上的web站点不能正常的发布,如位于ISA 2000或者ISA 2006上的web站点,因为ISA需要占用外部IP的80端口来侦听进入的http请求,但是web站点已经占用了此端口,所以,必须禁用IIS的Socket pooling,以便让IIS只是在某个IP上进行侦听。
对于IIS 5.0和IIS 6.0,解决的办法是不一样的,以下我先介绍在IIS 5.0中的处理办法,执行以下步骤:
操作方法
- 01
打开命令提示符,进入 X:\Inetpub\Adminscripts 目录(X 是IIS安装驱动器)。
- 02
运行此命令: cscript adsutil.vbs set w3svc/disablesocketpooling true 命令返回结果如下: disablesocketpooling : (BOOLEAN) True
- 03
停止并运行IIS Admin服务。
- 04
重启 WWW服务。 在IIS 6.0中,想解决这个问题,需要使用httpcfg.exe,它是Windows server 2003的support tools,存放在安装CD的Support\Tools\Support.cab文件中。 执行以下步骤以解决此问题: 安装Windows server 2003安装CD的\Support\Tools\Support.msi,然后打开命令提示符,运行httpcfg set iplisten -i xxx.xxx.x.x(xxx.xxx.x.x为你想要IIS侦听的IP地址),重启服务器,如果成功修改,Httpcfg 返回下列提示: HttpSetServiceConfiguration completed with 0 你可以运行httpcfg query iplisten命令来察看当前IIS侦听的IP地址。