一:检查nginx是否已经包含ipv6模块

[root@iz2ze3oyrjbxg32wecre15z /]# /alidata/server/nginx/sbin/nginx -V




nginx 默认支持ipv6和ipv4 nginx怎么支持ipv6_上传


从结果看出,输出结果没有 ipv6支持

如果支持ipv6,则输出结果会包含 “--with-ipv6”。


nginx 默认支持ipv6和ipv4 nginx怎么支持ipv6_Nginx_02


如果各位同学的环境已经支持,则可以不用往下看啦,呵呵!

二:准备nginx源码

1、本文以1.4.4版本为例,其他版本没有测试,不过我想基本类似,具体请各位同学亲测。

2、如果本地没有源码,则需要到如下地址下载:http://nginx.org/download/nginx-1.4.4.tar.gz 其他版本,也可以在http://nginx.org 下载,上面会列出所有版本以供下载。

3、将下载的源码上传到linux

在root 根目录新建 tmp目录

[root@iz2ze3oyrjbxg32wecre15z /]# cd /root

[root@iz2ze3oyrjbxg32wecre15z /]# mkdir tmp


nginx 默认支持ipv6和ipv4 nginx怎么支持ipv6_nginx root目录_03


将安装包上传到该目录,上传工具推荐同学们使用Xftp


nginx 默认支持ipv6和ipv4 nginx怎么支持ipv6_上传_04


三:编译nginx源代码,加入ipv6支持

1、 跳转到tmp目录,执行命令解压安装文件

[root@iz2ze3oyrjbxg32wecre15z /]# cd tmp

[root@iz2ze3oyrjbxg32wecre15z /]# tar xvzf nginx-1.4.4.tar.gz


nginx 默认支持ipv6和ipv4 nginx怎么支持ipv6_Nginx_05


2、 跳转到解压过后的目录,执行命令配置新的参数,加入 ipv6模块。

注意:在配置参数时,一定要在原来的参数的基础上追加,否则有可能丢失原来的支持模块,切记!切记!切记!

[root@iz2ze3oyrjbxg32wecre15z /]# cd nginx-1.4.4

[root@iz2ze3oyrjbxg32wecre15z/]#./configure --user=www --group=www --prefix=/alidata/server/nginx --with-http_stub_status_module --without-http-cache --with-http_ssl_module --with-http_gzip_static_module --with-ipv6

注意:‘--’符号之间有空格。


nginx 默认支持ipv6和ipv4 nginx怎么支持ipv6_nginx 默认支持ipv6和ipv4_06


….中间省略若干输出


nginx 默认支持ipv6和ipv4 nginx怎么支持ipv6_Nginx_07


3、 配置完毕后,执行make 命令,重新编译


nginx 默认支持ipv6和ipv4 nginx怎么支持ipv6_nginx 默认支持ipv6和ipv4_08


….中间省略若干输出


nginx 默认支持ipv6和ipv4 nginx怎么支持ipv6_nginx root目录_09


4、 编译完毕后,会在当前目录下创建objs目录,新的nginx执行文件将生成在该目录中


nginx 默认支持ipv6和ipv4 nginx怎么支持ipv6_nginx root目录_10


四:替换nginx执行文件

1、 同学们要养成好习惯,首先备份原来的nginx

[root@iz2ze3oyrjbxg32wecre15z /]#

cp /alidata/server/nginx/sbin/nginx /alidata/server/nginx/sbin/nginx.bak


nginx 默认支持ipv6和ipv4 nginx怎么支持ipv6_nginx root目录_11


2、 停止nginx

这里必须停止nginx,否则无法覆盖的哦!

[root@iz2ze3oyrjbxg32wecre15z /]# service nginx stop


nginx 默认支持ipv6和ipv4 nginx怎么支持ipv6_nginx_12


3、 覆盖nginx执行文件

[root@iz2ze3oyrjbxg32wecre15z /]# cp nginx /alidata/server/nginx/sbin/nginx


nginx 默认支持ipv6和ipv4 nginx怎么支持ipv6_上传_13


3、测试新的nginx程序是否正确

[root@iz2ze3oyrjbxg32wecre15z /]# /alidata/server/nginx/sbin/nginx -t


nginx 默认支持ipv6和ipv4 nginx怎么支持ipv6_nginx 默认支持ipv6和ipv4_14


4、 启动nginx

[root@iz2ze3oyrjbxg32wecre15z /]# service nginx start


nginx 默认支持ipv6和ipv4 nginx怎么支持ipv6_nginx 默认支持ipv6和ipv4_15


五:再次检查nginx是否已经支持ipv6

[root@iz2ze3oyrjbxg32wecre15z /]# /alidata/server/nginx/sbin/nginx -V


nginx 默认支持ipv6和ipv4 nginx怎么支持ipv6_nginx_16


至此,大功已经告成,接下来就为Nginx配置IPv6地址端口监听。

nginx可以同时支持ipv4与 ipv6的监听,但为了一致性的考虑,新版本Nginx推荐使用分开监听,下面我们开始进入正题。

六、默认IPV4配置

下面我们先来看一看默认的ipv4配置:


nginx 默认支持ipv6和ipv4 nginx怎么支持ipv6_nginx_17


七、加入ipv6监听

1、从Nginx 1.3的某个版本起,默认ipv6only是打开的,所以,我们只需要在监听中加入ipv6监听即可,不过推荐都手动加上比较好,代码如下:

listen [::]:80 ipv6only=on;


nginx 默认支持ipv6和ipv4 nginx怎么支持ipv6_nginx_18


2、编辑完毕后保存,然后使用命令检测配置是否正确

[root@iz2ze3oyrjbxg32wecre15z /]# /alidata/server/nginx/sbin/nginx -t


nginx 默认支持ipv6和ipv4 nginx怎么支持ipv6_Nginx_19


如果出现 test is successful代表配置检测成功。

3、重启nginx

[root@iz2ze3oyrjbxg32wecre15z /]# service nginx reload


nginx 默认支持ipv6和ipv4 nginx怎么支持ipv6_nginx 默认支持ipv6和ipv4_20


4、检测监听是否已经成功

[root@iz2ze3oyrjbxg32wecre15z /]# netstat -tuln


nginx 默认支持ipv6和ipv4 nginx怎么支持ipv6_上传_21


如果列表出现 :::80的监听代表ipv6的监听已经成功。

八、其他个性化操作

1、如果只想监听ipv6,则去掉ipv4的配置,然后将ipv6设置为默认即可。


nginx 默认支持ipv6和ipv4 nginx怎么支持ipv6_上传_22


2、如果想监听指定ipv6地址,则将中括号中的:: 换成 指定ipv6地址即可。


nginx 默认支持ipv6和ipv4 nginx怎么支持ipv6_nginx 默认支持ipv6和ipv4_23


3、在前面的配置中,很多同学看到有监听 443端口,这个是对ssl的监听,监听方式和默认80监听类似,大家可以举一反三嘛!

九、我们使用ipv6网站来测试是否已经可以正常访问

我们常用的网站是:http://ipv6-test.com/validate.php


nginx 默认支持ipv6和ipv4 nginx怎么支持ipv6_nginx root目录_24


结果显示,已经正确访问到网站。

至此,大功已经告成。关键我,不迷路,还有相关资料可免费获取


作者:锋行天下-恢弘