Nginx自启动失败

Linode又一次升级了~不过因为日本机房老机子还要过几周才能升级,自己也有些等不及了,就开了个新机子,打算搬个家,顺便扫掉服服上不要的垃圾。

新机子用了我自己写的lnmp一键安装脚本(其实大部分代码都是网上找的= =##),在DigitalOcean上制作好脚本后放到Linode来装。安装和搬家都没什么问题,但是装完之后一重启,就出问题了。

重启完之后照理说Nginx应该会自动启动的,可是等了半天网站还是不能访问。登录SSH,执行:

service nginx start

手动启动Nginx,网站马上就能访问了。自启动脚本一切正常,手动启动也没有问题,为什么nginx就是没启动起来呢?

翻看日志,发现这样一行:

2014/05/02 17:02:28 [emerg] 2912#0: bind() to [2400:8900::***]:80 failed (99: Cannot assign requested address)

感觉是自启动Nginx的时候,ipv6还没有初始化完毕,所以启动失败。而我登录SSH,手动启动Nginx时,ipv6早已初始化完毕,所以就能正常启动了。

大概猜出了原因,怎么解决?谷歌了半天,在serverfault上找到了类似的问题以及解决方案,在此做个记录。

在 /etc/sysctl.conf 中插入:

sysctl -w net.ipv6.conf.eth0.dad_transmits=0

或者

/etc/network/interfaces 中加入一行:

post-up while ip -6 addr show tentative | grep . > /dev/null ; do sleep 1 ; done

我用后面一种方法,问题解决。

《Nginx自启动失败》有4个想法

发表评论

电子邮件地址不会被公开。 必填项已用*标注