文章内容

2024/10/23 2:40:43,作 者: 黄兵

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

最近重启 Nginx 的时候出现了如下错误:

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

出现问题的原因:

Nginx 尝试绑定到端口 80 时失败,因为该端口已经被其他进程占用。

解决方案:

1. 检查端口占用情况

使用以下命令查看哪个进程占用了 80 端口:

sudo lsof -i :80

输出类似如下:

COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
apache2  1234   root    4u  IPv4  34921      0t0  TCP *:http (LISTEN)

COMMAND 列会显示占用端口的进程名称,比如 nginxapache2

2. 杀掉占用端口的进程

如果确定某个进程占用了 80 端口,可以使用 killkill -9 命令终止它:

sudo kill -9 <PID>
<PID> 替换为实际的进程 ID(PID)。
3. 检查 Nginx 是否已经运行

有时,重启时 Nginx 未完全关闭,导致端口被残留的 Nginx 进程占用。

先检查是否有 Nginx 进程在运行:

ps aux | grep nginx

如果有多余的 Nginx 进程,使用以下命令停止它们:

sudo pkill nginx

然后重新启动 Nginx:

sudo nginx
4. 检查 Nginx 配置文件

确保 Nginx 配置文件没有重复绑定到相同端口的错误。检查 /etc/nginx/nginx.conf/etc/nginx/sites-enabled/* 中的配置:

sudo grep -R "listen 80" /etc/nginx/

如果发现多个 listen 80; 的指令,请确保没有冲突。

5. 尝试重启 Nginx

如果确认 80 端口没有其他占用,可以重新加载 Nginx:

sudo nginx -s reload

或者直接重启:

sudo systemctl restart nginx


其它相关推荐:

1、Nginx 配置文件 nginx.conf 详解

2、Nginx 支持 HTTP/2

3、Flask + Gunicorn + Nginx 安装

4、Nginx 多上游服务器问题

5、Nginx + Flask 获取IP地址

分享到:

发表评论

评论列表