Windows采用nginx部署网站时一定注意防火墙的因素
·
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)