【问题标题】:Restart nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)重启 nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
【发布时间】:2022-03-13 06:39:15
【问题描述】:

我尝试sudo service nginx restart 并显示此错误:

nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)

我认为是关于这个符号链接?

ln -s ../sites-available/default default

我试试

cd /etc/nginx && grep -R listen *

sites-available/default:        listen 80;
sites-enabled/default:        listen 80;

我该如何解决?

【问题讨论】:

  • 该错误意味着您的服务器上已经有一个进程正在侦听 TCP 端口 80。您应该检查正在运行的进程并在不需要它时将其终止。然后启动nginx。
  • 我试图杀死它,但是当我想重新启动它时,我必须再次杀死它。这是正常的吗?或者它可以修复?对不起,我是新人
  • 使用 80 端口的进程是什么?是nginx还是别的?在您的服务器上,只有一个进程可以侦听端口,因此您必须禁用任何其他设置为声明端口 80 的进程。
  • i grep -R listen * 是站点可用/默认:和站点启用/默认:是使用
  • 使用“ps -auxf”查看服务器上当前正在运行的进程。或者使用“netstat -tulpn”查看哪些进程正在使用哪些端口。这将让您找出服务器上占用端口 80 的内容。有关如何使用“netstat”的说明,请参阅此链接:cyberciti.biz/faq/check-network-connection-linux

标签: ubuntu nginx


【解决方案1】:

您可以使用以下方法杀死它:

sudo fuser -k 80/tcp

然后再次尝试重启nginx:

service nginx start

【讨论】:

  • 它有效。谢谢
【解决方案2】:

对我来说,这是因为我安装了 lighttpd,它正在运行。卸载它,问题就消失了。

【讨论】: