随笔:记一次比较离谱的操作

116 阅读2分钟

nginx在windows上启动,启动了半天也启不来。

而且,nginx -t 还能通过,强制杀死nginx进程之后,居然还会重启。

重复运行start nginx,居然不会报端口已占用,而是多出了一堆监听8080端口的进程

直接人懵掉了。

image.png

看一下何方神圣在用8080端口,vmnat.exe 是什么鬼?

这个进程看着像是打通主机和虚拟机的一个网络地址转换。

突然想到之前配置了一个 从虚机的ipA:portA 映射到宿主机:8080 的规则,没有删除

image.png

删除该规则后,就没事了。

image.png

分析

  1. 为什么这个规则生效之后,会导致
    • 启动nginx会卡住,并且后台显示多个nginx进程

Windows中nginx多次启动的问题 - 幽室星辰 - 博客园 (cnblogs.com) 这个好像和nginx架构有关。。。

后台看到的nginx.exe是正常监听的,但是访问8080端口就会导致web浏览器hang住

分析:我们配置的nat规则就是把宿主机8080端口的流量导入 虚机的12345端口。但目前没启动虚机,所以自然就是"流量黑洞"了。

D:\BaiduNetdiskDownload\nginx-1.18.0\nginx-1.18.0>tasklist /fi "PID eq 6200" 
映像名称 PID 会话名 会话# 内存使用 
========================= ======== ================ =========== ============ 
vmnat.exe 6200 Services 0 9,716 K 

D:\BaiduNetdiskDownload\nginx-1.18.0\nginx-1.18.0>tasklist /fi "PID eq 21052" 

映像名称 PID 会话名 会话# 内存使用 

========================= ======== ================ =========== ============ 

nginx.exe 21052 Console 1 19,132 K 

D:\BaiduNetdiskDownload\nginx-1.18.0\nginx-1.18.0>tasklist /fi "PID eq 6648" 

映像名称 PID 会话名 会话# 内存使用 

========================= ======== ================ =========== ============ 

nginx.exe 6648 Console 1 19,124 K 

D:\BaiduNetdiskDownload\nginx-1.18.0\nginx-1.18.0>tasklist /fi "PID eq 11568" 

映像名称 PID 会话名 会话# 内存使用 

========================= ======== ================ =========== ============ 

nginx.exe 11568 Console 1 19,200 K

经验教训

做完实验之后需要还原配置,不然指不定哪天就给你埋一个炸弹。。。