Windows采用nginx部署网站时一定注意防火墙的因素

有在windows 上部署过nginx 代理web服务时可能会遇到一个问题, 就是nginx 配置好之后发现在服务器本地通过localhost 或者https://127.0.0.1 (以https 443端口为例, 当然80的情况也是一样)访问时是正常的。 即便是你的服务器已经配置了允许访问的入站安全策略,但是通过域名或者IP在外面访问就不好使, 直接提示502,如下图所示。
在这里插入图片描述
这大概率是被windows 防火墙影响了。

Windows 防火墙会根据“访问来源”和“连接目标”的组合来判断是否拦截

  • 当用本地IP 访问,特别是 https://127.0.0.1,Windows 直接判断为安全回环,不检查规则
  • 当用公网 IP 访问(如 https://54.99.xx.xx),只要你放开了 TCP 443 端口,防火墙也不会拦
  • 但当你用 域名 访问时(如 https://xxx.com),它会判断为“来自互联网”,应用的是更严格的“公用网络”策略

很多防火墙规则默认勾选:

✅ 专用网络
❌ 公用网络

所以你放行了端口也没用,除非你显式添加了“适用于所有网络类型”的规则

解决办法

如果你不想关防火墙,但想让 IP + 域名 都能访问 nginx 和后端,请这样放行:

:: 放行 TCP 443(用于 nginx 监听 HTTPS)
netsh advfirewall firewall add rule name="Allow HTTPS for All" dir=in action=allow protocol=TCP localport=443 profile=any

profile=any 表示适用于「专用网络 + 公用网络 + 域网络」,彻底解决问题

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐