Linode VPS上讓Nginx(lnmp)支持IPv6
IPv4地址將很快用完,IPv6普及也是必然之路,現(xiàn)在不少VPS服務(wù)商都已經(jīng)開始IPv6的過渡,像Linode、DirectSpace、BuyVM等都可以向客服發(fā)Ticket索要IPv6地址,He.net同時(shí)也提供IPv6 Tunnel間接的讓VPS支持IPv6。
預(yù)備工作:向客服索要IPv6地址,客服回復(fù)加上了就可以了,一般在他們網(wǎng)站后臺(tái)發(fā)ticket就可以。
一、為Nginx添加IPv6模塊
1、首先進(jìn)入nginx源碼的解壓目錄,下面以lnmp為例(lnmp 0.5或更高版本不需要執(zhí)行添加IPv6模塊此步,默認(rèn)已經(jīng)支持IPv6,在nginx 1.11.5或更高nginx版本已經(jīng)移除--with-ipv6編譯參數(shù),會(huì)自動(dòng)添加ipv6支持,nginx -V上也不會(huì)顯示該參數(shù)!)比如:lnmp0.5/nginx-0.7.67/,如果忘記放在那個(gè)目錄了,可以執(zhí)行:find / -name "nginx-0.7.67" ?-type d
2、找到目錄之后,執(zhí)行:cd /root/lnmp0.5/nginx-0.6.67/
3、接下來(lái)給Nginx加上IPv6模塊,執(zhí)行:./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module?--with-ipv6
4、如果編譯沒有錯(cuò)誤,然后執(zhí)行:make 但不要make install。
5、編譯完,在objs目錄下有一個(gè)nginx執(zhí)行文件,先備份下原來(lái)老的nginx文件,執(zhí)行:mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old ,再把新objs下的nginx cp到sbin下,執(zhí)行:cp objs/nginx /usr/local/nginx/sbin/nginx
6、執(zhí)行 /usr/local/nginx/sbin/nginx -t 測(cè)試下,顯示沒有問題。
7、再執(zhí)行:make upgrade
8、執(zhí)行:/usr/local/nginx/sbin/nginx -V 看一下,IPv6模塊已經(jīng)編譯進(jìn)去了。
二、Nginx啟用IPv6
Nginx添加上IPv6后,需要執(zhí)行:killall nginx 再執(zhí)行:/usr/local/nginx/sbin/nginx 不能用平滑重啟。
修改Nginx所有虛擬主機(jī)的配置,這個(gè)/usr/local/nginx/conf/nginx.conf 也要修改,listen 80;下面添加一行:
listen [::]:80 ipv6only=on;
其他虛擬主機(jī)將所有server {}里面的listen 80;下面添加上:
listen [::]:80;
如果要指定IP的話,所有虛擬主機(jī)的所有l(wèi)isten都需要添加上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地址需要用[]括起來(lái),如果客服已經(jīng)給加上IPv6地址了,而你不知道可以執(zhí)行:ifconfig 命令,如下圖:
按上面要求修改好后,執(zhí)行:/usr/local/nginx/sbin/nginx -t 查看是否有錯(cuò)誤,沒有錯(cuò)誤可以執(zhí)行:killall nginx ,再執(zhí)行:/usr/local/nginx/sbin/nginx 啟動(dòng)即可。
打開瀏覽器輸入:http://[2607:f878:3:2:0:300:2004:10]/ 就可以訪問了。
PS:你的電腦需要已經(jīng)支持IPv6,且連入IPv6,可以使用六飛、freenet6之類的現(xiàn)實(shí)支持IPv6。
如果在安裝過程中有問題,歡迎再本文留言或者到vps論壇相應(yīng)版塊發(fā)帖。
本文原創(chuàng),謝絕轉(zhuǎn)載。
>>轉(zhuǎn)載請(qǐng)注明出處:VPS偵探 本文鏈接地址:http://m.0794baidu.com/build/nginx-lnmp-ipv6.html












我現(xiàn)在換成了lnmp,
新的安裝時(shí)已支持ipv6,于是直接修改,但重啟時(shí)出錯(cuò)。
麻煩幫我看看。
http://bbs.vpser.net/thread-5580-1-1.html
@yesilike, 是
objs目錄是編譯時(shí)生成的嗎?
@yesilike, 編譯也需要在源代碼的目錄而不是程序的目錄。Lumanager不了解,教程只是針對(duì)lnmp的。
我是安裝的Lumanager,添加ipv6模塊時(shí)出錯(cuò):
:/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
@Auston_Jary, 每個(gè)server上配置上都需要加上listen ip:端口;
同大米的問題。。。
啟動(dòng)的時(shí)候出現(xiàn)
[emerg]: bind() to ...
必須每個(gè).conf文件都加上那句listen?
@大米, 可能是沒有改完全,所有的nginx配置都要改。
有個(gè)小問題
配置文件按這樣寫
listen 210.28.16.89:80;
listen [2001:da8:1010:f008:218:f3ff:feea:5a6f]:80;
可是啟動(dòng)的時(shí)候出現(xiàn)
[emerg]: bind() to [2001:da8:1010:f008:218:f3ff:feea:5a6f]:80 failed (98: Address already in use)
這是什么原因?
坐等回復(fù)。。。
太超前了,害的研究研究
@蓮花創(chuàng)作學(xué)園, 嗯,學(xué)校里教育網(wǎng)走IPv6沒算流量。
哇。我打算啟用了。因?yàn)槲业恼搲胁簧偻瑢W(xué)是用大學(xué)的校園網(wǎng)的。現(xiàn)在IPV6可以免流量呢。等啟用之后同學(xué)們可以來(lái)圍觀。
軍哥的信息很及時(shí)。謝謝了。
@暗の世界, 謝謝提醒
話說(shuō)軍哥你貌似寫錯(cuò)了吧~~~暈~~~我前面那個(gè)回復(fù)也寫錯(cuò)了額~~~
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
話說(shuō)軍哥你貌似寫錯(cuò)了吧~~~
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
玩的太高級(jí),小站就沒必要這樣搞了,4湊合著用吧。