特意新建了一个虚拟机来测试,虚拟机有两个 ip:a.a.a.a、b.b.b.b,希望 nginx 只侦听 a.a.a.a:80
但是当配置文件里设置指定侦听ip listen a.a.a.a:80;
后重启系统,nginx 会启动失败并报错Starting nginx: [emerg]: bind() to a.a.a.a failed (99: Cannot assign requested address)
,但是此时只要手动 systemctl start nginx
就能正常启动。
去掉配置文件里的ip listen 80;
后重启系统,nginx 却能正常启动。
总结:
指定侦听 ip 后不能随系统自动启动服务,但是手动启动服务使用正常。
不指定侦听 ip 的话就能随系统自动启动服务,使用正常。
这种情况应该如何解决?
临时解决办法见本帖评论(默认没有展开)
推测的原因是因为nginx需要检测ip去绑定,而检测的时候系统没有返回值or检测的时机过快导致系统不允许绑定,详细等大师补充
看看nginx启动的用户是不是root用户,80端口默认是只有root才能占用的,还的修改相关配置,才能让普通用户占用80端口。