宝塔控制面板nginx: “[emerg] still could not bind()” 错误的解决方法
[重要通告]如您遇疑难杂症,本站支持知识付费业务,扫右边二维码加博主微信,可节省您宝贵时间哦!
今天蹦哥说他服务器nginx老是无缘无故的就死了,而且需要重启服务器才可以,然后看日志发现了以下错误;
错误提示内容为:第一个方式:跟端口有关系
Jan 03 14:05:52 iZ28ujmpafrZ nginx[13470]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
Jan 03 14:05:52 iZ28ujmpafrZ systemd[1]: nginx.service: control process exited, code=exited status=1
Jan 03 14:05:52 iZ28ujmpafrZ nginx[13470]: nginx: [emerg] still could not bind()
Jan 03 14:05:52 iZ28ujmpafrZ systemd[1]: Failed to start The nginx HTTP and reverse proxy server.
Jan 03 14:05:52 iZ28ujmpafrZ systemd[1]: Unit nginx.service entered failed state.
Jan 03 14:05:52 iZ28ujmpafrZ systemd[1]: nginx.service failed.
上面提示80端口无法绑定,用命令 netstat -ntpl
或 netstat -ntlp|grep 80
查看端口占用情况
Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 13159/nginx: worker tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1541/sshd tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 11260/php-fpm: mast tcp6 0 0 :::80 :::* LISTEN 13159/nginx: worker
这里看到被nginx占用了,但是这时候的nginx我试了既不能停止也不能启动/重启它的服务,不得不kill掉
killall -9 nginx
这时候还要注意的是 /etc/nginx/nginx.conf
中的(笔者没有遇到这个问题,直接忽略跳到重启nginx成功解决问题):
listen [::]:80 default_server;
这句配置也会导致这个错误,我们可以注释掉或写成
listen [::]:80 ipv6only=on default_server;
最后成功重启nginx
systemctl restart nginx
===============================================
二跟权限有关系:按照以上的方法不能解决,请看下所有web网站目录是不是为777如果都设置为7777不在出现问题,就说明跟权限有关系;
==========================================================
三、跟默认timeout有关系;
keepalive_timeout 60;
tcp_nodelay on;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 256k;
fastcgi_intercept_errors on;
把以上timeout默认300值变大一些尝试一下;
问题未解决?付费解决问题加Q或微信 2589053300 (即Q号又微信号)右上方扫一扫可加博主微信
所写所说,是心之所感,思之所悟,行之所得;文当无敷衍,落笔求简洁。 以所舍,求所获;有所依,方所成!