Windows版Nginx默认不监听IPv6,需确认版本支持(1.3.0+且nginx -V显示IPv6 enabled)、配置listen [::]:80、开启防火墙IPv6端口并验证网络环境。

Windows版Nginx默认不自动监听IPv6地址,需手动修改配置并确认系统与网络环境支持,才能实现IPv6访问。
确认Nginx版本与IPv6基础支持
Nginx 1.3.0+ 均支持IPv6监听,但Windows下需确保编译时启用了IPv6(官方预编译二进制默认开启)。可通过命令验证:
nginx -V 2>&1 | findstr IPv6
若输出中含 --with-ipv6(旧版本)或更常见的是显示 IPv6 support: enabled,说明支持可用。若无此信息,建议下载最新稳定版 Nginx for Windows(如 nginx-1.24.0 或更高)。
配置listen指令启用IPv6监听
在 conf/nginx.conf 的 server 块中,添加或修改 listen 指令:
- 监听 IPv6 全部地址(推荐):listen [::]:80;
- 监听 IPv6 全部地址 + IPv4 兼容(双栈):listen [::]:80 ipv6only=off;(注意:Windows 下
ipv6only=off实际效果有限,建议分开写) - 更稳妥的双栈写法(推荐):
listen 80;
listen [::]:80;
⚠️ 注意:[::] 必须用方括号包裹;ipv6only=on/off 在 Windows 上行为不稳定,不建议依赖。
检查Windows网络与防火墙设置
Nginx能绑定IPv6端口,不代表外部可访问:
- 运行 ipconfig,确认网卡已获取有效 IPv6 地址(如
2001:db8::1或本地链路地址fe80::/64) - Windows 防火墙默认阻止 IPv6 入站连接。需新增入站规则:
打开「高级安全 Windows 防火墙」→「入站规则」→「新建规则」→ 选择「端口」→ TCP 80 →「允许连接」→ 勾选「域」「专用」「公用」→ 规则名称如 Nginx IPv6 HTTP - 若使用第三方安全软件(如 360、火绒),也需单独放行 IPv6 的 80 端口
测试IPv6访问是否生效
配置保存后,重启 Nginx(nginx -s reload 或先 nginx -s stop 再 start nginx):
- 本地测试(本机浏览器):
访问 http://[::1]/ 或 http://[fe80::1%接口索引]/(需查接口索引,如netsh interface ipv6 show interfaces) - 局域网其他设备测试:
使用对方设备的浏览器访问你的机器 IPv6 地址,例如 http://[2001:db8::100]/ - 命令行验证监听状态:
netstat -ano | findstr :80,应看到类似TCP [::]:80的条目 - 远程公网测试(如有公网IPv6):
使用支持 IPv6 的在线工具(如 ipv6-test.com)输入你的域名或 IPv6 地址检测 HTTP 响应
若仅 IPv4 可通而 IPv6 不响应,请依次排查:Nginx 配置语法、Windows 防火墙、本地网络是否分配 IPv6、客户端是否启用 IPv6 栈。










