首要排查方向是windows defender防火墙拦截,需检查“允许应用通过防火墙”中是否启用nginx.exe或其宿主进程(如cmd/powershell),并按需添加入站规则或临时关闭防火墙验证。

Windows 11上配置Nginx反向代理时,启动失败并报错“10013: An attempt was made to access a socket in a way forbidden by its access permission”,首要排查方向就是Windows Defender防火墙是否拦截了Nginx的入站连接,尤其当Nginx监听非回环地址(如0.0.0.0:80)或启用HTTPS时,防火墙默认会静默拒绝。
确认防火墙是否实际拦截
打开“Windows安全中心”→“防火墙和网络保护”→点击当前网络配置(如“专用网络”)→下滑找到“允许应用通过防火墙”。
在列表中查找nginx.exe或你运行Nginx所用的进程(例如:若通过cmd启动,可能显示为“命令提示符”;若用PowerShell,则为“Windows PowerShell”)。如果该条目未勾选“专用网络”或“公用网络”,说明防火墙已阻止其监听端口。
注意:Nginx本身不注册为“允许的应用”,它依赖宿主进程(如cmd、PowerShell、或你的自定义服务)获得通行权限。直接搜索“nginx”很可能找不到——必须按实际启动它的外壳程序来定位。
手动添加防火墙例外规则
方法一:通过图形界面添加
在“允许应用通过防火墙”页面点击右上角“更改设置”(需管理员权限)→ 点击“允许其他应用…” → 点击“浏览”,定位到Nginx安装目录下的nginx.exe(例如:C:\nginx\nginx.exe)→ 添加 → 勾选“专用网络”(开发/内网环境必选),根据需要勾选“公用网络”→ 点击“确定”。
方法二:使用PowerShell一次性配置(推荐)
以管理员身份运行PowerShell,执行以下命令:
New-NetFirewallRule -DisplayName "Nginx HTTP" -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow -Enabled True -Profile Private
New-NetFirewallRule -DisplayName "Nginx HTTPS" -Direction Inbound -Protocol TCP -LocalPort 443 -Action Allow -Enabled True -Profile Private
若你使用的是自定义端口(如8080),将-LocalPort 80替换为-LocalPort 8080即可。此方式绕过GUI限制,确保规则精确绑定到端口而非进程名。
临时禁用防火墙验证是否为根因
第一步:按下 Win+R,输入 wf.msc 回车,打开高级安全 Windows Defender 防火墙。
第二步:在左栏点击“Windows Defender 防火墙属性”,右侧分别点击“域配置文件”、“专用配置文件”、“公用配置文件”选项卡。
第三步:将每个配置文件的“防火墙状态”设为“关闭”,点击“确定”。
【操作后务必重启Nginx】 若此时nginx -s reload或start nginx成功且能正常访问,即可100%确认是防火墙拦截所致。切勿长期保持防火墙关闭,验证后立即恢复为“开启”并补全上一步的例外规则。











