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多次启动的问题的更多相关文章
- sublime text2在windows中以命令行启动
sublime text2在windows中以命令行启动 把执行文件添加到PATH中即可,如图: 如果你和我一样习惯了mac下的简写subl,那么需要在程序目录中新建一个批处理文件subl.bat ...
- Windows中Nginx配置nginx.conf不生效解决方法(路径映射)
Windows中Nginx配置nginx.conf不生效解决方法 今天在做Nginx项目的时候,要处理一个路径映射问题, location /evaluate/ { proxy_pass http:/ ...
- 【记录】解决windows中nginx明明退出了,为什么还能反向代理?CMD强制杀死进程命令
博主今天遇到一个很奇怪的问题,nginx在windows中明明已经退出了,而且在任务管理器中也没发现nginx进程, 为什么还能反向代理呢? 找了半天资料终于解决,现记录如下,希望能帮助到你. 步骤一 ...
- Windows 安装nginx并开机启动
Win安装nginx并 开机启动 下载nginx安装包 nginx-1.12.2.zip,解压到D盘. https://pan.baidu.com/s/1InQa527yq35Q68c73RBb-A# ...
- windows中的oracle12SE后启动的系统服务的列表
下图是我安装在windows 10下安装好oracle12.10SE之后的启动的系统服务的列表. 通常,我是将其全部修改为手动启动.当需要用oracle服务的时候,只需要启动对应的实例的服务和tnsl ...
- Windows中通过命令行启动打开Service 管理工具
经常需要打开Services 管理工具操控Service 的启动,停止. 通过控制面板 --> 管理工具 -->Service 太慢. 学到一个快捷方式. windows + R 启动 ...
- Windows中Nginx配置nginx.conf不生效解决方法
转:https://lucifer.blog.csdn.net/article/details/83860644?utm_medium=distribute.pc_relevant.none-task ...
- windows下nginx的启动关闭
Windows下Nginx的启动.停止等命令 在Windows下使用Nginx,我们需要掌握一些基本的操作命令,比如:启动.停止Nginx服务,重新载入Nginx等,下面我就进行一些简单的介绍. .启 ...
- Windows下Nginx的启动、停止等命令
Windows下Nginx的启动.停止等命令 在Windows下使用Nginx,我们需要掌握一些基本的操作命令,比如:启动.停止Nginx服务,重新载入Nginx等,下面我就进行一些简单的介绍.1.启 ...
随机推荐
- Java 反射(一)反射简介、原理和应用场景
目录 一.动态语言和动态语言的比较 动态语言 静态语言 二.反射 简介 反射的常见使用 1. 代码编辑器 2. Spring等框架的IoC容器 3. 和注解的配合使用 原理 反射优缺点 调试查看 Cl ...
- 20分钟掌握Android Gradle
目前国内对Android领域的探索已经越来越深,不少技术领域如插件化.热修复.构建系统等都对Gradle有迫切的需求,不懂Gradle将无法完成上述事情.所以Gradle必须要学习. Gradle 里 ...
- 分享我的CleanArchitecture for Razor Page项目模板
这个项目是参考和整合了jasontaylordev/CleanArchitecture 和 blazorhero/CleanArchitecture 代码基础上,重构出来的新的项目,这两个项目都是非常 ...
- 第5篇-调用Java方法后弹出栈帧及处理返回结果
在前一篇 第4篇-JVM终于开始调用Java主类的main()方法啦 介绍了通过callq调用entry point,不过我们并没有看完generate_call_stub()函数的实现.接下来在ge ...
- 【vue3】封装自定义全局插件
[vue3]封装自定义全局插件 原vue2方法 main.js import Vue from 'vue' import App from './App.vue' import router from ...
- S3C2440—4.时钟系统
文章目录 一.S3C2440时钟体系介绍 1.总线与时钟 2.时钟来源 3.选择时钟 4.产生时钟 5.流程 二.如何配置时钟源 1.设置FCLK频率寄存器 MPLLCON 2.设置分频HDIV.PD ...
- noip 模拟 7
我花了我多久的rp啊-- 考试经过 这次是三道题,依旧先看一遍,然后从头开始做 T1一看,这好像是KMP?等等,我好像忘了啊你个废,没事哈希也能做,On似乎可以呀,一波操作,我是不是要A题了? 转到T ...
- Nginx-出现-403-Forbidden
步骤一: 检查目录权限.权限不足的就加个权限吧. 例子:chmod -R 755 / var/www 步骤二: 打开nginx.conf 例子:vim /etc/nginx/nginx.conf 把 ...
- 简单介绍无限轮播图,js源代码
无限轮播图js源代码,今天介绍一下用js简单的编写无限轮播图 <!DOCTYPE html> <html> <head> <meta charse ...
- java 的内存结构
Java内存结构详解 Java把内存分成:栈内存,堆内存,方法区,本地方法区和寄存器等. 下面分别介绍栈内存,堆内存,方法区各自一些特性: 1.栈内存 (1)一些基本类型的变量和对象的引用变量都是在函 ...