wdcp默认不支持ipv6,nginx编译时没有加--with-ipv6选项。所以可以通过重新编译的方法使之支持ipv6。
参考此贴:http://www.wdlinux.cn/bbs/viewthread.php?tid=1929,使用升级脚本的方法更加方便。
一、使Nginx支持IPV6访问
首先查看nginx版本和编译信息
/www/wdlinux/nginx/sbin/nginx -V
返回结果:
nginx version: nginx/1.2.7 built by gcc 4.4.7 20120313 (Red Hat 4.4.7-3) (GCC) TLS SNI support enabled configure arguments: --user=www --group=www --prefix=/www/wdlinux/nginx-1.2.7 --with-http_stub_status_module --with-http_ssl_module --with-ipv6
上面结果是我升级过的,默认的是nginx/1.0.15,并且结尾没有--with-ipv6.(如果有--with-ipv6则说明支持ipv6访问)。
直接使用wdcp的nginx升级脚本:
wget http://down.wdlinux.cn/in/nginx_up.sh
修改脚本,在编译配置结尾增加 --with-ipv6:
./configure --user=www --group=www --prefix=/www/wdlinux/nginx-$ver --with-http_stub_status_module --with-http_ssl_module --with-ipv6
保存退出,升级nginx:
sh nginx_up.sh 1.2.7 #指定版本号,不指定则按默认,但是默认的可能版本较低
完成。
之后的事情主要是自动化添加listen [::]:80.
二、修改nginx启动脚本使网站自动监听ipv6
完成nginx ipv6的支持后,还有一个麻烦事,wdcp新建网站时是 listen 80; 要支持ipv6,还得修改为listen [::]:80; ,于是网站多的时候修改会比较麻烦,多用户时新建网站可能会比较麻烦。
因此可以修改/etc/init.d/nginxd 脚本,每次重启nginx都修改listen 行为 listen [::]:80。添加替换代码如下:
find /www/wdlinux/nginx-1.2.7/conf/vhost -name "*.conf" |xargs sed -i "2s/^.*$/ listen [::]:80;/g"
替换后的vhost配置文件:
server { listen [::]:80; server_name ipv6.hnubbs.net; root /wwwroot/ipv6_hnubbs_net/public_html; index index.html index.php index.htm; error_page 400 /errpage/400.html; error_page 403 /errpage/403.html; error_page 404 /errpage/404.html; error_page 405 /errpage/405.html; location ~ \.php$ { proxy_pass http://127.0.0.1:88; include naproxy.conf; } location / { try_files $uri @apache; } location @apache { proxy_pass http://127.0.0.1:88; include naproxy.conf; } }
域名AAAA解析后ping结果:
$ ping ipv6.hnubbs.net 正在 Ping ipv6.hnubbs.net [2605:f700:40:c00::196c:dc8d] 具有 32 字节的数据: 来自 2605:f700:40:c00::196c:dc8d 的回复: 时间=214ms 来自 2605:f700:40:c00::196c:dc8d 的回复: 时间=212ms 来自 2605:f700:40:c00::196c:dc8d 的回复: 时间=212ms 来自 2605:f700:40:c00::196c:dc8d 的回复: 时间=212ms 2605:f700:40:c00::196c:dc8d 的 Ping 统计信息: 数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失), 往返行程的估计时间(以毫秒为单位): 最短 = 212ms,最长 = 214ms,平均 = 212ms
把with写错了,写成了wiht
多谢指正