nginx配置ipv6监听的核心是使用listen [::]:端口指令,方括号为必需语法;双栈需同时写listen 80和listen [::]:80,现代版本(1.3+)默认支持,无需额外模块,但须配合系统ipv6启用、防火墙放行及云平台ipv6带宽开通。

在 Nginx 中配置 IPv6 监听,核心就是正确使用 listen [::]:端口 指令,并注意与 IPv4 共存时的兼容性细节。不需要额外模块,现代 Nginx(1.3+)原生支持,但写法和环境适配很关键。
基础 IPv6 监听写法
IPv6 通配地址必须用方括号包裹,:: 表示“所有可用 IPv6 地址”,等价于 IPv4 的 0.0.0.0:
-
listen [::]:80;—— 监听全部 IPv6 地址的 80 端口 -
listen [::]:443 ssl;—— 同理用于 HTTPS(SSL 必须显式声明) -
listen [2001:db8::1]:80;—— 监听指定 IPv6 地址(替换为你的实际地址) - ❌ 错误写法:
listen ::80;或listen *:80;,Nginx 会报语法错误
IPv4/IPv6 双栈监听(推荐写法)
让一个 server 块同时响应 IPv4 和 IPv6 请求,最稳妥、跨平台兼容的方式是分开写两行 listen:
-
listen 80;—— 默认监听所有 IPv4 地址(即0.0.0.0:80) -
listen [::]:80;—— 显式监听所有 IPv6 地址 - 无需加
ipv6only=on/off:Nginx 1.3+ 默认启用ipv6only=on,而 Windows 对该参数支持不稳定,显式设置反而易出问题 - HTTPS 同理:
listen 443 ssl;+listen [::]:443 ssl;
验证是否生效
配置保存后,必须执行三步检查:
- 语法检测:
nginx -t,确保输出 “syntax is ok” - 重启服务:
systemctl restart nginx(Linux)或nginx -s reload - 查看监听状态:
ss -tuln | grep ':80\|:443'或netstat -tuln | grep ':80',出现:::80或:::443即表示 IPv6 监听已启用
别忘了配套环境检查
配置正确 ≠ 外部可访问。还需确认:
- 服务器操作系统已启用 IPv6 并分配了有效地址(如
ip a或ipconfig查看是否有 global 类型的 IPv6) - 防火墙放行 IPv6 流量:Linux 用
ip6tables或ufw allow 'Nginx Full';Windows 防火墙需单独新建入站规则,勾选“允许 IPv6” - 云服务器(如阿里云、腾讯云)需在控制台开通 IPv6 公网带宽并绑定弹性 IP











