ipv6访问开启

Written by zumikua Updated at 2015-12-05 18:24:30 UTC

好长时间没去digitalocean后台看看了,今次去看了一下,然后不小心手贱开启了ipv6支持…… 秉持着送佛送到西的原则我决定顺便开启本站的ipv6支持。 一开始我以为直接访问ipv6地址就能访问到海绵那边去(就像访问IPV4地址一样,具体为什么是海绵那边nginx的配置文件一直都特么很奇妙我不想看) 但是事实证明我实在是太特么年轻了…… 因为现在在家是没有ipv6环境的,所以我用了网上的一些ipv6测试网站,首先试着ping了一下IP,提示destination unreachable。这是才知道原来服务器也是需要设置一下的。于是去DO的tutorial页面搜了一下,找到了ipv6的设置教程。(DO的community建设的真的很不错),重启以后,能ping了。 然后我去dnspod加了条AAAA record,想着这下总能成功了吧。然后事实又无情地给了我一巴掌。connection refused。 推测是nginx的问题,比如没bind ipv6的port什么的,于是去网上搜了一下nginx的ipv6配置。 按照网上的说明把listen修改好以后,重启nginx提示我配置文件错误,无Ipv6支持(大概是这个意思),当时我特么就心一沉,因为我记得在nginx配置ipv6的那个页面好像说ipv6支持是要编译进nginx的…… 这里就要说一下我后台的情况了,passenger(ruby)+spawn_fcgi(php)+passenger带的nginx。 妈蛋你现在让我重编译nginx不是坑人么……passenger可没提供重装的选项…… 去passenger的文档上瞅了几眼,卧槽passenger进化的好快,都已经有从私有源安装的模式了,让我这种还在用gem安装的人顿时有了一种迷失感。 不过仔细想想从源安装的话不能编译还是没什么用,还是老老实实编译吧。 文档上说如果是升级passenger的nginx的话是不需要卸载nginx的,只要**保证安装时提供的configure参数一致**就行了。 谁特么没事会去重新编译nginx玩么,肯定是为了添加新模块好吗!编译参数一样有什么意义!!! 走投无路的我只好选择“不管三七二十一我今天就是要直接覆盖试一试反正DO上还有backup”这条路线。 在重编译之前我还特地把passenger用gem给升级了一下,希望能够看到个recompile的选项什么的,然后这件事又成了我犯下的另外一个错误…… 更新以后,哇塞新版的passenger好潮啊支持辣么多语言好棒好棒,还有依赖检查好棒好棒,诶呀这个是什么您的内存只有400+不够编译想让passenger编译通过最少需要1G内存…… **你大爷的!** 然后错误提示的下面还提供了如何添加swap空间的介绍但是我是VPS诶你确认这样能行么? 于是继续去DO的tutorial上搜swap,还真有增加swap空间的办法…… 按照DO上的步骤执行以后,再顺便把nginx的源码下下来,我终于特么能够开始编译了。 编译过程倒是挺顺利的,顺带一提好像并不需要该listen后的地址直接写个80 nginx会自动bind IPv6地址,我的nginx版本是1.9.3。 **其实并不行,还是需要用listen [::]:80;** 然后我终于特么能通过ipv6的那个站点的检测啦!只限于前两个检测点。 第三个检测点提示我我的DNS Server怎么样怎么样……于是我去测了一下DNSPod的NS服务器地址……果然没有AAAA记录! 淦你这样还算是个NS服务器么! 开始我又不想从DNSPod迁出去,于是开始考虑其他的方法……比如把ipv6子域名的ns记录给改到do的dns服务器上去……(DO的DNS服务器有AAAA记录)但是仍然通不过验证。 于是又经过了一段折腾,我忽然间意识到了,特么DO的NS服务器地址不还是需要从DNSPOD上去查么…… **我选择死亡。** 于是就是这样了,如果你目前只有ipv6的环境而你又很想浏览我这个万年不更新前端丑到没朋友只有左下角的那个女仆能看但是她也是个面瘫的博客而你的DNS服务器也不能从IPV4的NS服务器上获取到IP的话……请修改host。 本站的ipv6地址为2604:a880:1:20::57:d001 请自行在host文件内添加 ipv6.zumikua.in 2604:a880:1:20::57:d001 顺便为了不让nginx把ipv6.zumikua.in给跳转到zumikua.in也是超麻烦的,最后把配置文件写成了这样 ```` if ($host != 'zumikua.in'){ set $my_var A; } if ($host != 'ipv6.zumikua.in'){ set $my_var "${my_var}B"; } if ($my_var = AB) { rewrite ^/(.*)$ http://zumikua.in/$1 permanent; } ```` if不能嵌套,if后面还必须有个空格,条件表达式没有与和或……你特么不是语言就不要装成一门语言的样子好么…… 啊顺带一提在写这篇博文的时候我忽然发现了chrome的中文分词功能,链接在此 [http://simple-is-better.com/news/319]( http://simple-is-better.com/news/319) i18n做的比大部分本土公司还好……真是令人汗颜。
Main