如何在停止时阻止 IIS 接受 TCP 连接?

如何在停止时阻止 IIS 接受 TCP 连接?

我在 Windows 2008 R2 机器上运行 IIS 7,发现停止 IIS 并不会阻止它接受连接。

停止 IIS 甚至不会终止端口 80 上的活动 telnet 会话。服务器继续显示 404 页面。

我是不是忽略了一些简单的事情?我的用例是,我需要阻止端口 80,以便负载均衡器将我的服务器从池中移除

答案1

netstat 能显示正在使用该端口的内容吗?

我还会尝试使用 sysinternals 工具(如 procmon 和 process explorer)来缩小可能导致端口保持打开状态的原因范围(和 tcpview)

答案2

这不是典型行为。您必须在 IIS 前面安装代理或其他程序。测试一下,看看在服务器上浏览 IE 时是否会出现 404 错误。如果没有,那么您的 Web 浏览器 PC 和 IIS 服务器之间的网络是什么样的?如果您在服务器上使用 IE 浏览 IIS 站点时出现 404 错误,则说明有其他程序正在监听端口 80。

错误 404 是 HTTP 服务器生成的 HTTP 错误。理解 HTTP 的程序会在端口 80 上响应您的请求,并构造错误 404 消息并通过 HTTP 协议将其传递给 Web 浏览器。

您确定要停止 IIS,而不是仅仅停止 IIS 中的一个虚拟站点吗?

答案3

你忽略了一些简单的东西。

负载均衡器功能确定应用程序池停止时 HTTP.SYS 的行为。

默认是HTTP 503;如果您的 LB 仅理解 TCP 而不是 HTTP 错误代码,请将上述内容设置为TCP 重置应该可以解决问题。

通常不需要停止 WAS 来从 LB 集群中删除节点,但这取决于 LB 功能。

http://msdn.microsoft.com/en-us/library/microsoft.web.administration.loadbalancercapabilities(v=VS.90).aspx

相关内容