Windows中nginx多次启动的问题
2021/9/5 7:07:27
本文主要是介绍Windows中nginx多次启动的问题,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
在Windows上做开发环境中的nginx服务器。为了使nginx在后台运行,使用如下命令来启停nginx:
cd <nginx安装目录> # 开启nginx并在后台运行 start nginx.exe # 关闭nginx ./nginx.exe -s stop # 重启nginx:先关闭再开启 ./nginx.exe -s stop; start nginx.exe
但是某次修改配置文件后,重启nginx,却发现根本没有生效。比如,把一个server
的root
直接删了,重启后居然还能正常响应。
接着发现,执行nginx -s stop
时已经提示没有nginx.pid
了(这意味着nginx应该已经关闭了),但网页仍然能打开,这说明nginx实际上还在运行。
打开任务管理器查看进程,发现居然还有4个正在运行的nginx进程。正常情况下,nginx运行时应该只有2个nginx进程(1个master进程,1个worker进程(默认配置是1个)),而关闭时则没有nginx进程。
所以原因很明显,是因为加载了旧配置的那批nginx进程一直都在运行,请求和响应一直都是被这批进程在处理,而加载了新配置的nginx进程虽然也运行起来了,但并没有得到处理请求的机会。
经过实验发现,每执行一次start nginx
,都会创建新的nginx进程,同时创建新的nginx.pid
文件,但只有最先启动的nginx进程才会处理到请求。
而如果多次使用./nginx.exe -s stop; start nginx.exe
命令来重启,则总是会在某一次报出nginx.pid
的错误,然后就看到nginx进程就变多了。猜想这是因为nginx -s stop
命令并不是等到nginx关闭完成之后才执行结束,而仅仅是发送了一个系统信号,那么start nginx
就会紧接着立即执行,创建新的nginx进程(会占用nginx.pid
文件),而此时旧进程可能还没来得及关闭,然后就可能因为nginx.pid
文件或其他某些因素导致旧进程没有关闭成功,于是就继续运行下去了。
所以,鉴于可能会出现此种问题,应该调整对nginx的启停管理的操作方式:
cd <nginx安装目录> # 开启nginx并在后台运行 start nginx.exe # 关闭nginx nginx.exe -s stop # 重载配置文件(不需要重启进程) nginx.exe -s reload # 重启nginx(仅在必须重启时才重启,再次启动前先确认已经关闭) nginx.exe -s stop start nginx.exe
这篇关于Windows中nginx多次启动的问题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-13用Nginx防范DDoS攻击的那些事儿
- 2024-12-13用Terraform在AWS上搭建简单NGINX服务器指南
- 2024-10-29Nginx发布学习:从入门到实践的简单教程
- 2024-10-28Nginx发布:新手入门教程
- 2024-10-21nginx 怎么设置文件上传最大20M限制-icode9专业技术文章分享
- 2024-10-17关闭 nginx的命令是什么?-icode9专业技术文章分享
- 2024-09-17Nginx实用篇:实现负载均衡、限流与动静分离
- 2024-08-21宝塔nginx新增8022端口方法步骤-icode9专业技术文章分享
- 2024-08-21nginx配置,让ws升级为wss访问的方法步骤-icode9专业技术文章分享
- 2024-08-15nginx ws代理配置方法步骤-icode9专业技术文章分享