序言:我在虚拟机上运行Windows Server 2008 R2。这个虚拟机映像已经愉快地在端口80上托管TeamCity数周。通过访问网址(pcname.domain.com),网络上的其他人可以访问此TeamCity服务器。
问题:似乎公司决定在周末将一些更新推送到我的机器上。似乎这一轮更新决定安装/更新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'(system和svchost!)
答案 0 :(得分:0)
在提升的命令提示符下命中命令netstat -ano
,以查看哪些应用程序正在侦听哪些端口。此命令将显示正在侦听端口80的进程的PID。现在,打开任务管理器 - >进程选项卡。从视图 - >选择Columns菜单,启用PID列,您将看到端口80上正在侦听的所有进程的名称。您可以终止列出的任务。大多数应用程序,如万维网发布服务,IIS管理服务,Web部署代理服务可能会使用Windows操作系统中的端口80.
答案 1 :(得分:0)
在Windows中,使用端口80的常见嫌疑人是IIS本身,如果安装了Web部署代理服务(可能还有任何其他应用程序绑定到该端口)。 PID 0和4只是告诉您使用该端口的应用程序作为服务运行。如果您不需要任何此类(IIS,Web部署等),请转到“服务”并禁用它们,之后该端口应该可以自由绑定。
您可以使用net sh http show servicestate | findstr HTTP
来获取地址和端口绑定信息。
一个简单的解决方案(我也在具有多个应用的生产服务器中使用的解决方案)是基于域或URL路径本身(see here how to with nginx)设置代理。