1.首先 发现
nginx -s reload
重载 配置无效,然后尝试进行 nginx -s stop 之后显示成功,但是本地访问 localhost : nginx监听端口 依然出现Nginx的欢迎界面!
2. cmd里面命令查看 Nginx的监听端口,依然存在端口占用。
#查看所有端口占用情况
netstat -ano
#查看被占用端口对应的PID,输入命令:
netstat -aon|findstr "49157"
#继续输入tasklist|findstr "2720",回车,查看是哪个进程或者程序占用了2720端口
#在cmd的命令窗口中输入:taskkill /f /t /im nginx.exe ,杀掉该进程
3. 分析原因:
因为Nginx是多进程模型,有一个主进程和多个子进程,主进程只负责管理子进程,基本的网络事件由各个子进程处理。
所以有时候当我们通过nginx -s reload这种方式去重启Nginx的话,发现是无效的,这就是因为我们杀死了一个子进程,然后主进程会开启另一个子进程,所以我们需要先关闭掉Nginx的所有进程(包括主进程和子进程),使用如下命令:
taskkill /IM nginx.exe /F
【其中/IM是用来kill掉指定名字的进程的,-F是用来强制kill的,详细的参数介绍可以在dos中通过TASKKILL /?
查看】
然后再启动Nginx:
start nginx.exe
这样就可以了。