如何停止nginx使用80端口

12

我正在尝试使用sudo apt-get install nginx更新nginx,但是它给我一个与端口80被占用相关的错误信息。当我运行

sudo netstat -tlnp | grep 80

我理解

tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      6845/nginx      
tcp        0      0 127.0.0.1:8080          0.0.0.0:*               LISTEN      1919/config.ru  
tcp        0      0 0.0.0.0:8060            0.0.0.0:*               LISTEN      6845/nginx

虽然我无法轻松地理解--help函数中每列的含义,但我猜测在这个示例中,6845nginx的进程ID。如果我尝试使用以下命令来终止它:

sudo kill 6845

然后再次运行sudo netstat -tlnp | grep 80,我会看到:

tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      10130/nginx     
tcp        0      0 127.0.0.1:8080          0.0.0.0:*               LISTEN      1919/config.ru  
tcp        0      0 0.0.0.0:8060            0.0.0.0:*               LISTEN      10130/nginx

换句话说,似乎 nginx 立即在另一个进程 ID 下重新开始监听端口 80。我该如何停止运行中的 nginx 呢?(我也尝试了 sudo systemctl stop nginx,但无效。)


2
sudo service nginx stop - arkascha
1
这应该是一个关于serverfault的问题帖子。 - armnotstrong
3
在执行“sudo service nginx stop”命令后,我仍然看到相同的进程在运行。 - Kurt Peek
3个回答

13

/etc/nginx/nginx.conf中的每个server块中,您需要明确定义一个除80以外的listen参数,否则nginx将默认静默地使用端口80。

此外,请调整/etc/nginx/conf.d/default.conf中的配置。


1
这是一个令人恼火的陷阱。感谢您的评论。 - Tony Legrone
我不知道它隐式地使用80端口。谢谢。 - cakel

9

打开 /etc/nginx/sites-available/default 文件。

nano /etc/nginx/sites-available/default

将其中的端口80更改为其他端口并保存更改


啊!这就是我一直在寻找的。 - ayandas

1
我通过在浏览器中输入 127.0.0.1:80,进入了一个 GitLab 登录页面,最终解决了问题。我之前安装过 GitLab 但一直没有使用,卸载后端口80就不再被占用了。请注意,保留原文中的HTML标签。

我遇到了同样的问题,我更改了GitLab的配置并使用反向代理将GitLab从端口80切换到8081,之后Nginx正常工作。 - Avtandil Kavrelishvili

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接