Nginx:配置和安装IPv6网络支持

时间:2020-01-09 10:42:47  来源:igfitidea点击:

如何在Linux或者Unix上设置具有HTTP/2,SSL和IPv6 + IPv4支持的Nginx

编译支持IPv6的Nginx

您需要传递with-ipv6选项来配置命令。
执行以下命令进行编译,然后输入(这是最新版本的默认设置,因此您可以跳过此步骤):

# cd /path/to/nginx-src-code/
# ./configure --without-http_autoindex_module --without-http_userid_module \
--without-http_auth_basic_module --without-http_geo_module \
--without-http_fastcgi_module --without-http_empty_gif_module \
--with-poll_module --with-http_stub_status_module \
--with-http_ssl_module --with-ipv6
# make install

验证Nginx中的IPv6支持

使用以下命令验证Nginx Web服务器中的IPv6支持:

# /usr/local/nginx/sbin/nginx -V

或者

# nginx -V
nginx version: nginx/0.8.46
built by gcc 4.1.2 20080704 (Red Hat 4.1.2-48)
TLS SNI support disabled
configure arguments: --without-http_autoindex_module --without-http_userid_module --without-http_auth_basic_module --without-http_geo_module --without-http_fastcgi_module --without-http_empty_gif_module --with-poll_module --with-http_stub_status_module --with-http_ssl_module --with-ipv6

或者一个简单的简短命令:

# nginx -V 2>&1 >/dev/null | grep --color -o with-ipv6

输出示例:

with-ipv6

如何在Nginx中启用IPv6支持?

确保根据设置传递选项。
请注意,所有" IPv6地址"均在方括号中指定。

编辑配置文件

编辑/usr/local/nginx/conf/nginx.conf或者/etc/nginx/nginx.conf,执行:

# vi /usr/local/nginx/conf/nginx.conf

确保将listen指令更新如下(必须将其放置在`server {}指令之间):

# listen to all IPv4 and IPv6 interfaces for port 80
# IPv4
listen :80;
# IPv6
listen [::]:80;

在一行中同时收听IPv4和IPv6地址:

listen [::]:80;

不要仅在IPv6上侦听IPv4:

listen [::]:443 default ipv6only=on;
listen [::]:80 default ipv6only=on;

如何配置具有HTTP/2 + SSL和IPv6/IPv4支持的Nginx?

语法为:

# port 443 IPv4 with http2 and ssl
        listen 443 ssl http2;
        # port 443 IPv6 with http2 and ssl
        listen [::]:443 ssl http2;
        # port 80 IPv4
        listen *:80;
        listen [::]:80;
        # my server name :)
        server_name www.theitroad.local;

重新加载Nginx服务器

重新加载并重新启动nginx配置,执行:

# /usr/local/nginx/sbin/nginx -t && /usr/local/nginx/sbin/nginx -s reload

或者

# nginx -t && nginx -s reload

或者

# systemctl reload nginx

如何仅在2607:f0d0:1002:59 :: 2 IPv6地址上侦听?

编辑配置文件,如下所示:

listen listen [2607:f0d0:1002:59::2]:80;

如何验证IPv6和IPv4均正常工作?

使用netstat命令来验证ip绑定:

# netstat -tulpna | grep nginx

输出示例:

tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      33094/nginx         
tcp        0      0 0.0.0.0:443                 0.0.0.0:*                   LISTEN      33094/nginx         
tcp        0      0 :::80                       :::*                        LISTEN      33094/nginx 
tcp6       0      0 :::443                      :::*                        LISTEN      33094/nginx

tcp6行表示我的nginx在IPv6上列出。
您也可以使用wget命令或者Web浏览器进行验证:

$ wget http://[2607:f0d0:1002:59::2]/

请注意,您需要更新DNS并设置IPv6记录的AAAA类型。