你有没有遇到过:项目本来跑得好好的,突然就挂了,而且还是在你出差中?
0、突发情况
出差高铁中,小张发信息说内部使用的项目管理平台出问题了,登录后报nginx欢迎你。接着是一张截图。

此时我的心情如坠冰窟。
虽然内部系统影响不大,但此事一出确实影响出差的心态。
1、问题分析
前端确实使用nginx部署,但2个多月都正常使用,非常之丝滑。我开始回忆这几天我在"服务器"上都做了什么,哪些对此会有影响。
结果是,真的没有什么出格的事情。
行为分析失败,那就进行技术分析。
这个截图可以明确看出,请求没有走到管理平台应用服务,而是被nginx默认的欢迎页拦截了。那它极有可能是:
1、nginx配置错误。
2、端口冲突。
配置错误的可能性较小,我直接排查端口冲突。
2、问题定位
2.1 端口占用情况
通过查看端口占用情况,我发现了多个进程占用了80端口。这就很有问题了。
bash
netstat -ano | findstr :80
TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 34908
TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 29620
TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 33340
TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 28948
TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 10160
TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 32788
2.2 查看这些进程都是干啥的
通过查看这些进程的详细信息,我发现它们除了一个是管理系统的进程,其他居然都是nginx进程。这是在开什么玩笑?!
bash
Get-Process -Id 34908,29620,33340,28948,10160,32788,15080 | Format-List Id,ProcessName,Path
Id : 10160
ProcessName : com.docker.backend
Path : C:\Docker\resources\com.docker.backend.exe
Id : 28948
ProcessName : nginx
Path : D:\Downloads\nginx-1.28.3\nginx-1.28.3\nginx.exe
Id : 29620
ProcessName : nginx
Path : D:\Downloads\nginx-1.28.3\nginx-1.28.3\nginx.exe
Id : 32788
ProcessName : nginx
Path : D:\Downloads\nginx-1.28.3\nginx-1.28.3\nginx.exe
...
3、问题解决
端口占用实锤后,解决方案也就随之而来了。这些nginx进程显然不是正常使用的,都杀掉它们吧!
bash
taskkill /F /IM nginx.exe
成功: 已终止进程 "nginx.exe",其 PID 为 29620。
成功: 已终止进程 "nginx.exe",其 PID 为 34908。
成功: 已终止进程 "nginx.exe",其 PID 为 32788。
成功: 已终止进程 "nginx.exe",其 PID 为 33340。
成功: 已终止进程 "nginx.exe",其 PID 为 28948。
重新访问系统,一切如旧!
4、找找根因
这些nginx进程,从何而来?
突然脑海中灵光闪现,是我双击了nginx.exe吗?
故事要从出差前说起,为了给Windows服务器部署系统,我下载了最新的nginx版本。
解压后,发现里面有nginx.exe文件。
我双击了这个文件,以为这样就自动安装了。可是双击就黑屏一闪,毫无效果。那就多点击了几次。
想到这里,我感觉这TM真是太好笑了。
哈哈哈哈!
你有过什么'手贱'操作把自己坑过?评论区聊聊,让我知道我不是一个人。