nginx 地址已被使用,无论配置了什么端口

nginx 地址已被使用,无论配置了什么端口

我正在尝试使用 nginx 托管网页。在本地虚拟机上运行可以立即运行,但在外部服务器上则不行。

在控制台中输入时nginx,错误如下:

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

运行 netstat 查看使用了哪些端口,得到以下输出:

root@vm-1234567-41:~# netstat -lnp | grep -E ':80|8080'
tcp    0    0 0.0.0.0:8080    0.0.0.0:*    LISTEN    894/nginx: master p

在我看来,这应该是这样的。只有 nginx 使用该端口,所以应该没有其他程序使用该端口,对吗?

有些事情没有解决问题:

  • sudo killall nginx进而sudo systemctl start nginx
  • 停止 nginxsystemctl stop nginx并重新启动
  • 将端口更改为任何其他端口(总是导致相同的“地址已被使用”错误消息)

不确定这些是否真的有影响,但我还是尝试了(没有成功):

  • 使用 ufw 允许 http 和 https 流量
  • 使用 ufw 允许端口(80、8080 等)

我该如何修复此问题?我认为错误消息本身暗示了错误的错误。

附言:

  • apache2控制台中运行的程序无法被识别
  • httpd控制台中运行的程序无法被识别
  • 安装了 Squid 缓存服务器,但我不确定如何检查这是否是导致问题的原因。

答案1

停止在控制台中运行。这有一个用例,并且 nginx 和 Apache 中都有特定选项来处理此用例你没有使用- 看起来你只是在随机尝试一些东西。

错误内容为...地址已被使用

是的,nginx已经开始即使它是完全相同的二进制文件,您也无法启动端口上列出的另一个守护进程。

您需要停止正在运行的守护程序才能启动 nginx。考虑到您已经尝试过的方法,如果主机上安装了多个 nginx 实例或多个启动机制,我不会感到惊讶。重新启动主机并运行systemctl status nginx

更改 nginx 配置后,请使用 进行测试nginx -t。如果没有报告任何错误,请使用 进行应用systemctl reload nginx。如果出于某种原因,您想让 nginx 服务器脱机但保持主机运行,请运行systemctl stop nginx。您可以使用 重新启动它systemctl start nginx

相关内容