Windows采用nginx部署网站时一定注意防火墙的因素
Windows下nginx部署网站需注意防火墙设置 在Windows上部署nginx代理web服务时,即使配置正确,外部访问域名或IP可能显示502错误,这通常是由于Windows防火墙的访问控制规则导致的。防火墙会根据"访问来源"和"连接目标"组合进行拦截:当你用本地IP 访问,特别是 https://127.0.0.1,Windows 直接判断为安全回环,不检查规则默认放行,但当你用 域名 访
·
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 表示适用于「专用网络 + 公用网络 + 域网络」,彻底解决问题
更多推荐
所有评论(0)