给定:两个指向一台机器的 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 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 管理器中创建一个站点并为其设置绑定: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 Listen-Only 列表可能包含对该机器上可能不存在的接口的引用。数据字段包含错误号。
默认情况下,IIS 绑定到机器上所有 IP 的端口 80。要在 IIS 7 中禁用此行为,请执行以下命令,替换为您希望 IIS 侦听的 IP 地址:
您需要重新启动 IIS 才能使更改生效。
尝试做:
httpcfg set iplisten -i 1.1.1.1:80
从命令提示符。它可能是套接字池......默认情况下,IIS 想要侦听所有 IP(正如 Evan 所说),因此当 Tomcat 将其中一个带走时,它就会出现问题。