先在终端下输入指令 nginx -V
,看看输出结果有没有–with-ipv6,没有的话就需要重新编译带有ipv6支持的nginx了。
编译nginx就不在这里说了,下面讲一下正确地配置nginx让其同时监听IPv4和IPv6的端口(包括http协议的80和https协议的443端口),同时介绍一下只监听IPv6和特定IPv6地址的方法。
同时监听IPv4和IPv6地址
从 Nginx 1.3 的某个版本起,默认 ipv6only 是打开的。虽然 Linux 系统默认是监听 IPv6 的某个端口会同时监听对应的 IPv4 的端口,但是 FreeBSD 是默认分开 IPv6和 IPv4 的。所以为了一致性的考虑(新版本 Nginx 必须推荐这样做),请使用分开监听的方法。
编辑网站的配置文件 /etc/nginx/conf.d/default.conf
,将 server
段的 listen
语句改成:
1 | listen 80; |
如果开启了 ssl 和 http2 ,可以改成:
1 | listen 443 ssl http2; |
只监听 IPv6 地址,不监听 IPv4 地址
没问题,将 listen 写成:
1 | listen [::]:80 default ipv6only=on; |
监听一个指定的IPv6地址
和 IPv4 指定地址一样,就在 listen 里写上完整的地址就 OK 了!以一个 IPv6 地址为例:
1 | listen [2607:f0d0:1002:51::4]:80; |
修改完成后,必须重启nginx服务(reload是不行的):
1 | service nginx restart |