我用的vps服务提供商PhotonVPS早在去年底就说要增加ipv6支持,不过一直没收到他们的通知邮件。今天ifconfig查了一下,已经有ipv6地址了,ping6 ipv6.google.com也ping通了,说明vps已经原生支持ipv6。

记得上次编译nginx时没有添加ipv6支持,现在需要重编译一下,顺便升一下级。

wget http://nginx.org/download/nginx-0.8.54.tar.gz
tar -xzvf nginx-0.8.54.tar.gz
cd nginx-0.8.54
./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-ld-opt=-ltcmalloc_minimal --with-ipv6
vi auto/cc/gcc #将CFLAGS=“$CFLAGS -g”注释掉,去掉debug,编译出的文件更小
make #这里只make,不用make install!
编译完后,在objs目录下会生成nginx可执行文件,先将原nginx文件备份
mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak 然后
cp objs/nginx /usr/local/nginx/sbin/
killall nginx #干掉nginx进程
/usr/local/nginx/sbin/nginx #重新启动nginx

同时要在server段是监听ipv6的80端口

server {
listen 80; 监听ipv4 80端口
listen [::]:80 ipv6only=on; 一定要加上后面这句,否则在监听ipv6时ipv4也默认被监听了,在nginx启动时会报错[emerg]: bind() to [::]:80 failed (98: Address already in use),当然这里要绑定特定的ipv6地址也是可以的
server_name ipv6.xx.com;
… }

再次按上面方法重启nginx,然后解析域名AAAA记录到ipv6地址,搞定!

现在访问Blog of Jones,只要网络支持ipv6会默认使用ipv6方式访问了!

PS: WordPress默认会把半角转换为全角符号,比如把 -- 转换为 –,这样使正常的代码显示错误,解决方法如下:

修改主题theme下的主题函数functions.php文件,在里面的头部加入下面的代码:

<?php remove_filter('the_content', 'wptexturize'); ?>