English |
  • 美国VPS主机推荐
  • |
  • 代购服务
  • |
  • 10美元以下VPS
  • |
  • VPS新手指南/教程
  • |
  • 留言板
  • |
  • 关于
  • | 登录 |

    Linode VPS上让Nginx(lnmp)支持IPv6

    2010年12月13日 上午 | 作者:VPS侦探

    IPv4地址将很快用完,IPv6普及也是必然之路,现在不少VPS服务商都已经开始IPv6的过渡,像LinodeDirectSpaceBuyVM等都可以向客服发Ticket索要IPv6地址,He.net同时也提供IPv6 Tunnel间接的让VPS支持IPv6。

    预备工作:向客服索要IPv6地址,客服回复加上了就可以了,一般在他们网站后台发ticket就可以。

    一、为Nginx添加IPv6模块

    1、首先进入nginx源码的解压目录,下面以lnmp为例(lnmp 0.5或更高版本不需要执行添加IPv6模块此步,默认已经支持IPv6,在nginx 1.11.5或更高nginx版本已经移除--with-ipv6编译参数,会自动添加ipv6支持,nginx -V上也不会显示该参数!)比如:lnmp0.5/nginx-0.7.67/,如果忘记放在那个目录了,可以执行:find / -name "nginx-0.7.67"  -type d

    2、找到目录之后,执行:cd /root/lnmp0.5/nginx-0.6.67/

    3、接下来给Nginx加上IPv6模块,执行:./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-ipv6

    4、如果编译没有错误,然后执行:make不要make install。

    5、编译完,在objs目录下有一个nginx执行文件,先备份下原来老的nginx文件,执行:mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old ,再把新objs下的nginx cp到sbin下,执行:cp objs/nginx /usr/local/nginx/sbin/nginx

    6、执行 /usr/local/nginx/sbin/nginx -t 测试下,显示没有问题。

    7、再执行:make upgrade

    8、执行:/usr/local/nginx/sbin/nginx -V 看一下,IPv6模块已经编译进去了。

    二、Nginx启用IPv6

    Nginx添加上IPv6后,需要执行:killall nginx 再执行:/usr/local/nginx/sbin/nginx 不能用平滑重启。

    修改Nginx所有虚拟主机的配置,这个/usr/local/nginx/conf/nginx.conf 也要修改,listen 80;下面添加一行:

    listen [::]:80 ipv6only=on;

    其他虚拟主机将所有server {}里面的listen 80;下面添加上:

    listen [::]:80;

    如果要指定IP的话,所有虚拟主机的所有listen都需要添加上IP,效果如下:

    server
    {
    listen       184.82.232.8:80;
    listen       [2607:f878:3:2:0:300:2004:10]:80;
    listen       [2607:f878:3:2:0:300:2004:11]:80;
    server_name linode.vpser.net;
    index index.html index.htm index.php;
    root  /home/wwwroot;

    ....省略部分配置

    }

    要注意IPv6地址需要用[]括起来,如果客服已经给加上IPv6地址了,而你不知道可以执行:ifconfig 命令,如下图:

    按上面要求修改好后,执行:/usr/local/nginx/sbin/nginx -t 查看是否有错误,没有错误可以执行:killall nginx ,再执行:/usr/local/nginx/sbin/nginx 启动即可。

    打开浏览器输入:http://[2607:f878:3:2:0:300:2004:10]/ 就可以访问了。

    PS:你的电脑需要已经支持IPv6,且连入IPv6,可以使用六飞freenet6之类的现实支持IPv6。

    如果在安装过程中有问题,欢迎再本文留言或者到vps论坛相应版块发帖。

    本文原创,谢绝转载。

    >>转载请注明出处:VPS侦探 本文链接地址:https://www.vpser.net/build/nginx-lnmp-ipv6.html
    VPS侦探推荐:
    遨游主机VultrLinode搬瓦工LOCVPSKVMLAHOSTKVMHostXen80VPS美国VPS主机,国内推荐腾讯云阿里云
    欢迎加入VPS侦探论坛交流:https://bbs.vpser.net

    发表评论

    *必填

    *必填 (不会被公开)

    评论(20条评论)

    1. yesilike说道:

      我现在换成了lnmp,
      新的安装时已支持ipv6,于是直接修改,但重启时出错。
      麻烦帮我看看。
      http://bbs.vpser.net/thread-5580-1-1.html

    2. yesilike说道:

      objs目录是编译时生成的吗?

    3. VPSer说道:

      @yesilike, 编译也需要在源代码的目录而不是程序的目录。Lumanager不了解,教程只是针对lnmp的。

    4. yesilike说道:

      我是安装的Lumanager,添加ipv6模块时出错:

      :/usr/local/nginx# ./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-ipv6
      -bash: ./configure: No such file or directory

    5. VPSer说道:

      @Auston_Jary, 每个server上配置上都需要加上listen ip:端口;

    6. Auston_Jary说道:

      同大米的问题。。。
      启动的时候出现
      [emerg]: bind() to ...

      必须每个.conf文件都加上那句listen?

    7. VPSer说道:

      @大米, 可能是没有改完全,所有的nginx配置都要改。

    8. 大米说道:

      有个小问题
      配置文件按这样写
      listen 210.28.16.89:80;
      listen [2001:da8:1010:f008:218:f3ff:feea:5a6f]:80;
      可是启动的时候出现
      [emerg]: bind() to [2001:da8:1010:f008:218:f3ff:feea:5a6f]:80 failed (98: Address already in use)
      这是什么原因?
      坐等回复。。。

    9. 太超前了,害的研究研究

    10. VPSer说道:

      @莲花创作学园, 嗯,学校里教育网走IPv6没算流量。

    11. 哇。我打算启用了。因为我的论坛有不少同学是用大学的校园网的。现在IPV6可以免流量呢。等启用之后同学们可以来围观。

      军哥的信息很及时。谢谢了。

    12. 暗の世界说道:

      话说军哥你貌似写错了吧~~~晕~~~我前面那个回复也写错了额~~~

      True

      ./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-ipv6

      False

      ./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

    13. 暗の世界说道:

      话说军哥你貌似写错了吧~~~

      True

      ./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

      False

      ./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-ipv6

    14. Kimcool说道:

      玩的太高级,小站就没必要这样搞了,4凑合着用吧。