mac 上启动 nginx 443 端口被占用,问题排查

450 阅读2分钟

问题概述

最近在在启动 nginx 时,发现报错 nginx: [emerg] bind() to 0.0.0.0:443 failed (48: Address already in use),发现是端口被占用了

image.png

我也很懵,想着重启可以解决90%问题的态度,我重启了,果然重启是有效果的。

image.png

但是过两天发现又启动不了,还是443被占用,然后又重启,发现重启后就可以。但是每次出问题都重启电脑吧。

后来秉着对技术的热情,还是要排查一下问题。后面果然又出现问题了。

问问GPT

image.png

按照GPT 的指引 sudo lsof -i :443

image.png

看来看去,看不懂,还是去问问广大网友。

网上排查

后来网上查了很多资料,从stackoverflow 查到 csdn 都没有解决,大部分都是说有多个nginx启用,需要全部关闭,再启动,可是我看了半天都只有一共nginx,在活动监视器里没有nginx,包括sudo lsof -i :443也没有看到有其他的nginx进程在启动。

image.png

最终还是只能靠自己

后来想想端口被占用启动不了,但是重启电脑后,可以启动,这个时候端口没有被占用。端口占用时我查看了一下sudo lsof -i :443,重启后我再次查看443端口的占用情况sudo lsof -i :443, 后来我发现了一个问题,在重启后这个node进程没了。

image.png

我也不知道这啥意思啊,问问GPT

image.png

原来就是这个进程在占用443端口。 然后我就

kill -9 66739

nginx

nginx: [emerg] bind() to 0.0.0.0:443 failed (48: Address already in use)

我特发,还是启动失败。 然后我又查看了一下端口占用情况。

image.png

发现它又重启了,还在占用443,又kill试下,还是被重启😑。

不行还是要靠GPT

image.png

我发现一个东西,PM2,这个我发现我好像见过,就是在第一次启动公司项目时装过,当时也不知道这是干啥的。 然后执行pm2 list

image.png

好像就是这个进程,按照GPT的指示,pm2 stop 0

image.png

然后查看443端口占用情况,果然那条node进程没了。 最后nginx 启动

image.png

终于启动了😭😭😭。

再次查看为什么有pm2

后来发现一个问题,公司的项目A启动时不需要 nginx 但是启动脚本会用到pm2,关闭项目时不会关闭这个进程;公司项目B,需要用到nginx,进行代理,

所以每次启动项目A后 再启动 nginx 就会被占用,导致开发B项目就无法启动。

PM2是什么呢?

GPT来解答吧

image.png

结语: 还得GPT