IIS 占用了我的 80 端口,我无法取回它! [Windows 服务器 2008;尝试 运行 TeamCity]

IIS Took Over My Port 80 and I Can't Get it Back! [Windows Server 2008; Trying to run TeamCity]

序言: 我是 运行 windows 虚拟机上的 Server 2008 R2。这个虚拟机映像已经愉快地在端口 80 上托管 TeamCity 几个星期了。网络上的其他人通过访问 url (pcname.domain.com).

来访问此 TeamCity 服务器

问题: 似乎公司决定在周末向我的机器推送一些更新。看来这一轮更新决定了install/update IIS。瞧,访问映射到 TeamCity 服务器的 URL 实际上会将我带到股票 IIS7 页面。访问 url/login.html 会将我带到 TeamCity 登录页面。

尝试次数: 首先,我将 TeamCity 端口更改为 8080,并且能够在 url:8080(或 localhost:8080)访问它。但是,对我来说,人们必须在不提供端口的情况下访问服务器...所以我将 TeamCity 服务器端口更改回 80 并开始尝试修复此 IIS 问题。

从那时起,我通过从 Windows 中删除角色和服务来卸载 IIS7 - 我现在托管“0 个角色”。我已经从我的 PC 中删除了 IIS 的所有痕迹,但是访问 localhost 仍然给我 404 未找到(而不是找不到服务器或只是我的 TeamCity 页面)。

我的问题:我如何防止 Windows Server 2008 尝试在端口 80 上托管一些默认垃圾,以便再次看到我的 TeamCity 服务器?

编辑: 执行 netstat -ano 后,与端口 80 关联的唯一 PID 是“0”和“4”(系统和 svchost!)

在提升的命令提示符下点击命令,netstat -ano 以查看哪些应用程序正在侦听哪些端口。此命令将向您显示侦听端口 80 的进程的 PID。现在,打开任务管理器 -> 进程选项卡。从 View -> Select Columns 菜单中,启用 PID 列,您将看到所有正在侦听端口 80 的进程的名称。您可以终止列出的任务。大多数应用程序,如万维网发布服务、IIS 管理服务、Web 部署代理服务可能会在 Windows 操作系统中使用端口 80。

在 windows 中,通常怀疑使用端口 80 的是 IIS 本身,如果安装了 Web 部署代理服务(但它可能有任何其他应用程序绑定到该端口)。 PID 0 和 4 只是告诉您使用该端口的应用程序是 运行 作为服务。如果您不需要这些(IIS、Web 部署等),请转到服务并禁用它们,之后端口应该可以自由绑定。

您可以使用net sh http show servicestate | findstr HTTP获取地址和端口绑定信息。

一个简单的解决方案(我也在具有多个应用程序的生产服务器中使用的解决方案)是根据域或 URL 路径本身设置代理 (see here how to with nginx) .