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

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

给定:两个指向一台机器的 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 时,它会发脾气。

相关内容