You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows Server 2012 VPS中Nginx与IIS冲突及公网访问问题求助

解决Windows Server 2012上Nginx外网访问失败及与IIS端口冲突问题

嘿,我来帮你搞定这两个头疼的问题,都是Windows Server环境下部署服务常遇到的坑,咱们一步步来排查解决:

一、外网IP无法访问网站的问题

你在远程桌面能用localhost访问,但外网连不上,大概率是端口未放行或者Nginx监听范围不对,按下面的步骤排查:

1. 检查Windows Server防火墙入站规则

Windows防火墙默认会拦截外部的端口访问,你需要手动放行80端口:

  • 打开「Windows Defender防火墙」→ 点击左侧「高级设置」
  • 选择「入站规则」→ 右侧点击「新建规则」
  • 规则类型选「端口」→ 下一步,勾选「TCP」,输入特定本地端口「80」
  • 选择「允许连接」→ 下一步,勾选所有网络类型(域、专用、公网)
  • 给规则起个名字(比如「Nginx 80端口放行」),完成创建

2. 确认Nginx监听所有网卡

你的Nginx配置里listen 80;理论上是监听所有IP,但有时候Windows环境下可能会有绑定问题,建议改成明确监听所有网卡:

server {
    listen 0.0.0.0:80; # 替换原来的listen 80;
    server_name _;
    # 其他配置保持不变
}

修改后重启Nginx:打开命令行到Nginx安装目录,执行nginx -s reload,如果配置有错误会提示,也可以先用nginx -t验证配置语法是否正确。

3. 检查VPS的云安全组(如果是云服务商的VPS)

如果你用的是阿里云、腾讯云这类云VPS,别忘了在服务商控制台的「安全组」里配置入站规则,放行TCP 80端口的流量,这个是很多人容易忽略的关键步骤!

二、IIS启动导致Nginx无法启动的问题

这是典型的端口冲突——IIS默认会占用80端口,而你的Nginx也监听80,所以两者不能同时启动。有两个解决方向:

1. 修改IIS的监听端口(保留Nginx用80)

如果你需要同时运行IIS和Nginx,可以把IIS的端口改掉:

  • 打开IIS管理器,找到你部署的网站,右键点击「编辑绑定」
  • 选中HTTP协议的绑定项,点击「编辑」,把端口从80改成其他(比如8080)
  • 保存后重启IIS服务,这样Nginx就能正常启动80端口了

2. 停用IIS服务(如果不需要IIS)

如果你的服务完全依赖Nginx,不需要IIS的话,直接停掉IIS的服务就行:

  • 打开管理员权限的命令提示符,执行net stop w3svc临时停止服务
  • 如果不想让IIS开机自动启动,执行sc config w3svc start= disabled(注意start=后面有空格),这样下次开机IIS就不会自动占用端口了

额外验证小技巧

  • 重启Nginx后,用netstat -ano | findstr ":80"命令,检查80端口是否被Nginx进程占用(核对PID对应Nginx的进程)
  • 在外网设备上,用telnet XXX.XXX.192.176 80测试端口是否能连通,如果通了说明端口放行没问题,剩下的就是Nginx配置的细节调整

内容的提问来源于stack exchange,提问作者Nima Kaviyani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 14:52:32