在具有多个IP的单机上设置IIS7和TomCat

给定:指向一台机器的两个DNS名称:“mysrv”和“myapp.mysrv”。 这台机器有两个ip地址(1.1.1.1和1.1.1.2)。

我需要在1.1.1.1上为myapp.mysrv和TomCat在1.1.1.2上为mysrv设置IIS7。
我需要服务器在80端口上提供两个资源(mysrv和myapp.mysrv)。

我做了什么:在TomCat的configuration(server.xml)中,我将“address”属性添加到Connector元素:

<Connector className="org.apache.coyote.tomcat4.CoyoteConnector" port="80" minProcessors="5" address="1.1.1.2" maxProcessors="75" enableLookups="false" redirectPort="8443" acceptCount="10" /> 

 <Engine name="Standalone" defaultHost="mysrv" debug="0"> <Host name="mysrv" debug="0" appBase="webapps" unpackWARs="true" autoDeploy="false"> 

然后在IISpipe理器中创build一个站点并为其设置绑定:Type = http; Host Name = myapp.srv; Port = 80; IP地址= 1.1.1.1

但是,当我尝试启动网站时,我得到了两个错误(在EventLog中):1.万维网发布服务(WWW服务)没有注册URL前缀http://myapp.mysrv:80:1.1.1.1/ 2.该网站已被禁用。 数据字段包含错误编号。

2.无法绑定到[::]:80的底层传输。 IP只听列表可能包含对本机上可能不存在的接口的引用。 数据字段包含错误编号。

默认情况下,IIS绑定到机器上所有IP上的端口80。 要在IIS 7中禁用此行为,请执行以下命令,replace您希望IIS侦听的IP地址:

 netsh http add iplisten ipaddress=xxx.xxx.xxx.xxx 

您需要重新启动IIS以使更改生效。

尝试做:

httpcfg set iplisten -i 1.1.1.1:80

从命令提示符。 它可能是套接字池… IIS默认情况下要监听所有的IP(如Evan所说),所以当Tomcat将其中一个IP丢弃时,它会发生变化。