单个服务器共享我们的主要网站(由 Apache 托管)和 Exchange OWA 站点(由 IIS 托管)。
这些网站有 2 个不同的公网 IP,并且有 2 个不同的 URL。但是,IIS 坚持要获取分配给服务器的所有静态 IP。
我做了一些研究并找到了这个链接:http://support.microsoft.com/kb/892847
我使用的是 IIS 6.0。我继续禁用套接字池,然后重新启动。使用 httpcfg 将 IIS 分配给 2 个内部 IP(xxx11:80、xxx11:443),现在 IIS 站点表现得好像端口正在使用中,即使 Apache 也已关闭。我仔细检查了 apache 配置,并在必要时指定了 .12 IP。
我查看了我的 ListenOnlyList,它看起来是正确的。它有 2 个条目和正确的端口。
为了好玩,我重新启用了套接字池,一切正常。我可以使用 Active Ports 程序,并看到 0.0.0.0:80 在打开和关闭 IIS 时进入和退出使用。
关闭套接字池后,情况又变糟了。
看起来 IIS 完全忽略了 ListenOnlyList。但当我将 ListenOnlyList 更改为 0.0.0.0 时,IIS 运行顺畅。我仔细检查了 IIS,确保 IP 匹配 - 确实匹配。它不在“所有未分配”上,而是在 xxx11 上。太疯狂了。
有任何想法吗?
答案1
禁用套接字池在 IIS6 上不起作用。相反,您必须更改提到的注册表项,然后执行 httpcfg 操作。
假设您更改了注册表项,运行 httpcfg query iplisten 的输出是什么?
答案2
您是否确保在 IIS 的网站属性中仅选择 IIS 服务器的 IP 地址?您可能选择了“(所有未分配)”。我不确定这是否能解决您的问题,但值得检查一下。
答案3
我写了一篇博客文章,详细介绍了在 httpcfg 中实现此功能的步骤:
基本上:
- 手动为 IIS 创建一些 IP 地址绑定(因此不会创建“全部捕获”场景)
- 设置 Apache 在不在上述绑定中的 IP 地址或端口上运行