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

在LNMP环境中启动Nginx服务时遇到'bind() to 0.0.0.0:80 failed (98: Address already in use)'错误。通过检查端口占用程序并终止相关进程,可以成功解决此问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use)   这个是nginx重启是 经常遇到的。   网上找了很多信息 都是没有啥用。说的乱七八糟的。   发现原来是nginx重复重启。自己占用了端口。 解决

方法  killall -9 nginx 杀掉nginx 进程  然后重启就行了。  service nginx restart 

这样就解决了。


-----------------------------------------------------------------------------------------------------------------------------------------------------

今天在做LNMP的时候,启动nginx服务,无法开启,导致网页打不开。把服务从起一下发现提示错误如下:

Starting nginx: 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)
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)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] still could not bind()

问题描述:地址已被使用。可能nginx服务卡死了,导致端口占用,出现此错误。

解决方法:首先用lsof:80看下80端口被什么程序占用。lsof返回结果如下:

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 3274 root 6u IPv4 10664 0t0 TCP *:http (LISTEN)
nginx 3547 nginx 6u IPv4 10664 0t0 TCP *:http (LISTEN)

发现是nginx程序,所以我们把nginx服务k掉,重新启动服务。。命令如下:

kill -9 3274

kill -9 3547

service nginx start

Starting nginx:                                            [  OK  ]

OK了,服务成功启动!~~

当你尝试启动 Nginx 时,如果看到错误信息 `nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)`,这意味着端口 80 已经被其他程序占用。以下是关于这个问题的详细介绍及解决办法: ### 1. 错误含义 Nginx 需要绑定到指定的 IP 地址和端口号(通常是 80 端口),以便能够接受来自外部网络的 HTTP 请求。然而,当另一个服务已经在使用相同的地址和端口时,就会导致这个 "Address already in use" 的错误。 --- ### 2. 解决步骤 #### 步骤一:查找已占用端口的服务 你需要确定哪个程序正在使用 80 端口。可以在终端输入以下命令检查: ```bash netstat -tulnp | grep :80 ``` 或者使用更现代的替代工具: ```bash ss -tuln | grep :80 lsof -i :80 ``` 上述命令会显示类似如下的结果: ``` tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1234/httpd ``` 其中最后一列展示了进程 ID (`PID`) 和对应的程序名 (`httpd`, Apache Web Server)。 #### 步骤二:停止冲突服务 如果你确认那个占用了 80 端口的服务不需要运行,可以直接将其停止。例如对于 Apache 来说, ```bash sudo systemctl stop httpd # CentOS/RHEL 系统 # 或者 sudo service apache2 stop # Ubuntu/Debian 系统 ``` 然后再次尝试启动 Nginx。 #### 步骤三:更改 Nginx 使用的端口 如果你想保留原有的服务继续在 80 端口运行,可以选择让 Nginx 改为监听其他的非标准端口。编辑 Nginx 配置文件(通常位于 `/etc/nginx/nginx.conf` 或 `/usr/local/nginx/conf/nginx.conf`)找到类似下面的一段,并修改端口号: ```nginx server { listen 80; server_name localhost; location / { root html; index index.html index.htm; } } ``` 改为比如 `listen 8080;` ,保存后重新加载配置: ```bash /usr/local/nginx/sbin/nginx -s reload ``` --- ### 3. 总结 这个错误是因为有多个应用试图在同一时间监听同一个 TCP/IP 地址+端口组合所引起的。按照以上指导可以轻松定位问题根源并采取相应措施予以修复。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值