nginx启动服务提示98: Address already in use错误的解决

Redirecting to /bin/systemctl status nginx.service
● nginx.service - nginx - high performance web server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since Fri 2021-10-15 16:28:34 CST; 2min 0s ago
     Docs: http://nginx.org/en/docs/
  Process: 2599 ExecStartPost=/bin/sleep 0.1 (code=exited, status=0/SUCCESS)
  Process: 4136 ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf (code=exited, status=1/FAILURE)
  Process: 4134 ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf (code=exited, status=0/SUCCESS)

Oct 15 16:28:32 iZwz9d8jbsexyrvas26v6eZ nginx[4136]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
Oct 15 16:28:32 iZwz9d8jbsexyrvas26v6eZ nginx[4136]: nginx: [emerg] bind() to 0.0.0.0:443 failed (98: Address already in use)
Oct 15 16:28:33 iZwz9d8jbsexyrvas26v6eZ nginx[4136]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
Oct 15 16:28:33 iZwz9d8jbsexyrvas26v6eZ nginx[4136]: nginx: [emerg] bind() to 0.0.0.0:443 failed (98: Address already in use)
Oct 15 16:28:33 iZwz9d8jbsexyrvas26v6eZ nginx[4136]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
Oct 15 16:28:33 iZwz9d8jbsexyrvas26v6eZ nginx[4136]: nginx: [emerg] bind() to 0.0.0.0:443 failed (98: Address already in use)
Oct 15 16:28:34 iZwz9d8jbsexyrvas26v6eZ nginx[4136]: nginx: [emerg] still could not bind()
Oct 15 16:28:34 iZwz9d8jbsexyrvas26v6eZ systemd[1]: nginx.service: Control process exited, code=exited status=1
Oct 15 16:28:34 iZwz9d8jbsexyrvas26v6eZ systemd[1]: nginx.service: Failed with result 'exit-code'.
Oct 15 16:28:34 iZwz9d8jbsexyrvas26v6eZ systemd[1]: Failed to start nginx - high performance web server.

这个异常看到就知道是端口被占用 ,具体应该是80端口被占,大部分是已经启动了Nginx占用引起的。

解决办法

首先用lsof -i :80 查看80端口被什么程序占用,返回结果如下:

nginx     4519 root    9u  IPv4 235192      0t0  TCP *:http (LISTEN)
nginx     4520  www    9u  IPv4 235192      0t0  TCP *:http (LISTEN)
nginx     4521  www    9u  IPv4 235192      0t0  TCP *:http (LISTEN)
nginx     4521  www   11u  IPv4 238490      0t0  TCP iZwz9d8jbsexyrvas26v6eZ:http->123.150.174.180:14352 (ESTABLISHED)
nginx     4521  www   12u  IPv4 238368      0t0  TCP iZwz9d8jbsexyrvas26v6eZ:http->dns94.online.tj.cn:44485 (ESTABLISHED)

发现是nginx进程占用了80端口,所以我们把nginx进程kill掉,重新启动服务。

命令如下(kill 掉所有的nginx进程):

[root@xxxx sbin]# lsof -i :80 |grep nginx |grep -v grep|awk '{print $2}'         
4219
4223
[root@xxx sbin]# kill -9 4219
[root@xxxx sbin]# kill -9 4223
[root@iZwz9d8jbsexyrvas26v6eZ sbin]# service nginx start
Redirecting to /bin/systemctl start nginx.service

服务正常启动,服务可以正常访问

Failed to start nginx - high performance web server 异常处理

上午这个错误提示折腾了一上午也没有解决,你会看到网上各种资料说是端口占用什么的,结果我把nginx的端口改成了其它的,还是不能正常启动,试了各种办法,最后找到了原始的nginx.conf文件,然后从新配置了一下,结果一切正常了。说明很多时候是配置的原因引起的

上一篇:Spring IoC 依赖查找


下一篇:Spring核心技术IOC和AOP