给定:两个指向一台机器的 DNS 名称:“mysrv”和“myapp.mysrv”。这台机器有两个 IP 地址(1.1.1.1 和 1.1.1.2)。
我需要在 1.1.1.1 上为 myapp.mysrv 设置 IIS7,并在 1.1.1.2 上为 mysrv 设置 TomCat。
我需要服务器在 80 端口上提供两个资源(mysrv 和 myapp.mysrv)。
我所做的是:在 TomCat 的配置(server.xml)中,我向 Connector 元素添加了“address”属性:
<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">
然后在 IIS 管理器中我创建一个站点并为其设置绑定:类型=http;主机名=myapp.srv;端口=80;IP 地址=1.1.1.1
但是当我尝试启动网站时,出现两个错误(在 EventLog 中):1. 万维网发布服务(WWW 服务)未注册 URL 前缀http://myapp.mysrv:80:1.1.1.1/对于站点 2。该站点已被禁用。数据字段包含错误编号。
2. 无法绑定到 [::]:80 的底层传输。IP 仅侦听列表可能包含对此计算机上可能不存在的接口的引用。数据字段包含错误编号。
答案1
默认情况下,IIS 会绑定到计算机上所有 IP 上的端口 80。要在 IIS 7 中禁用此行为,请执行以下命令,替换您希望 IIS 侦听的 IP 地址:
netsh http add iplisten ipaddress=xxx.xxx.xxx.xxx
您需要重新启动 IIS 才能使更改生效。
答案2
尝试做:
httpcfg set iplisten -i 1.1.1.1:80
从命令提示符。可能是套接字池...默认情况下,IIS 希望侦听所有 IP(如 Evan 所述),因此当 Tomcat 删除其中一个 IP 时,它会发脾气。