按照官网上的说法,使用 start nginx 启动 nginx,使用 nginx -s quit 可以优雅地退出。

经实验,使用 start nginx 之后,会启动两个 nginx 的进程,据官网上说,一个是控制进程,一个是工作进程(One of the processes is the master process and another is the worker process.)。

当我们启动进程之后,现在 nginx 可以开始工作了,但当我们再次使用 start nginx 之后,会发现又启动了两个进程。

现在我们使用 nginx -s quit 命令,会发现还剩下两个进程,再使用 nginx -s quit,会报错啊。。。,但其实现在还有两个 nginx.exe 进程。使用 nginx -s reload 呢,也会报错。

存在这种现象导致的问题就是,如果我不小心使用了两次 start nginx,那实际在监听 80 端口(或者是其它端口)的是第一次启动的,所以当我修改了配置文件,然后 nginx -s reload,会发现对配置文件的修改并没有起作用。然后使用 nginx -s quit 来优雅地退出,会发现 nginx 竟然还能用。

解决方法是使用 taskkill命令强制终止进程。

为什么会出现这种问题呢,观察+猜测一下吧:

当使用 start nginx 命令之后,会产生 ./logs/nginx.pid 这个文件,文件中记录了 nginx.exe 的pid,当重复使用 start nginx 时,nginx.pid 中的内容会被后来者替换,这样 nginx.exe 就不知道之前启动的那些自己的进程的 pid 是什么了。之前启动的那些 nginx.exe 的进程已经被 nginx.exe 抛弃了(还被系统领养着,#_#)。

nginx for windows中的一项缺陷的更多相关文章

  1. nginx for windows 中虚拟主机路径设置问题

    由于Windows版本的Nginx其实是在Cygwin环境下编译的,所以Nginx使用的是Cygwin的路径格式,所以在Nginx的配置文件nginx.conf中,路径既不能使用*nix的格式,也不能 ...

  2. 【记录】解决windows中nginx明明退出了,为什么还能反向代理?CMD强制杀死进程命令

    博主今天遇到一个很奇怪的问题,nginx在windows中明明已经退出了,而且在任务管理器中也没发现nginx进程, 为什么还能反向代理呢? 找了半天资料终于解决,现记录如下,希望能帮助到你. 步骤一 ...

  3. nginx在windows系统中如何启动、重启、停止

    nginx在windows系统中如何启动.重启.停止   查看nginx的版本号:nginx -v 启动nginx:start nginx 快速停止或关闭nginx:nginx -s stop 正常停 ...

  4. Windows中Nginx配置nginx.conf不生效解决方法(路径映射)

    Windows中Nginx配置nginx.conf不生效解决方法 今天在做Nginx项目的时候,要处理一个路径映射问题, location /evaluate/ { proxy_pass http:/ ...

  5. Nginx——在Windows环境下安装

    下载 Nginx是开源软件,用户可以访问 http://nginx.org/ 网站获取源码包或Windows二进制文件下载.其中1.13.x版本为开发版本,1.12.0版本为稳定版本.开发版本分支会较 ...

  6. Nginx——在Windows环境下安装(一)

    下载 Nginx是开源软件,用户可以访问 http://nginx.org/ 网站获取源码包或Windows二进制文件下载.其中1.13.x版本为开发版本,1.12.0版本为稳定版本.开发版本分支会较 ...

  7. Nginx在Windows平台的配置

    Nginx在Windows平台的配置 能够使用Nginx搭建Tomcat集群,并完成负载均衡. 1.什么是Nginx 2.为什么使用Nginx 背景: 互联网飞速发展的今天,大用户量高并发已经成为互联 ...

  8. nginx的简单使用和使用nginx在windows上搭建tomcat集群

    nginx是一款轻量级的web服务器,常用的作用为服务器/反向代理服务器以及电子邮件(IMAP/POP3)代理服务器 1.为什么我们要使用Nginx? 反向代理: 反向代理(Reverse Proxy ...

  9. Windows中遇到的些问题及解决办法

    1.win7 无法将程序锁定到任务栏 由于不正确的使用去掉桌面快捷键小箭头等,导致无法将程序固定到任务栏 如:http://jingyan.baidu.com/article/ac6a9a5e41bd ...

随机推荐

  1. 【转】Android M新控件之AppBarLayout,NavigationView,CoordinatorLayout,CollapsingToolbarLayout的使用

    Android M新控件之AppBarLayout,NavigationView,CoordinatorLayout,CollapsingToolbarLayout的使用 分类: Android UI ...

  2. Java实现热替换

    package test; import java.io.ByteArrayOutputStream; import java.io.FileInputStream; import java.nio. ...

  3. 数据库字段Pointer的操作方法

    多数情况下要要是Pointer字段实现了类似传统关系数据库的关联操作,联合查询能够减少提交次数,今天带来几种过滤器的使用方法: 首先确定2个Class,也就是表: A表:user表,用户个人信息,字段 ...

  4. sequelize翻译(1)

    第一次翻译(由mongoose转了mysql) v 3.0.0 1.Sequelize类 2.sequelize对象 3.sequelize.define()返回的表对象 4.表对象的方法 1.Seq ...

  5. js 如何清除setinterval

    var id=window.setInterval(function(){ },1000);window.clearInterval(id);

  6. iOS小技巧

    键盘透明: textField.keyboardAppearance = UIKeyboardAppearanceAlert; 状态栏的网络活动风火轮是否旋转: [UIApplication shar ...

  7. C读取文件

    C读取文件,这种写法不会多一行. #include "stdafx.h" #include <vector> using namespace std; struct P ...

  8. mysql 模块使用

    import MySQLdb conn = MySQLdb.connect(host=',db='fengjian') cur = conn.cursor() sql = 'insert into a ...

  9. MSDN相关下载地址

    Windows Server 2016官网下载:https://msdn.microsoft.com/zh-cn/subscriptions/downloads/default.aspx#search ...

  10. oracle表空间相关SQL语句

    Oracle 数据库查看表空间的使用情况 SELECT d.tablespace_name, space "SUM_SPACE(MB)", ) "USED_SPACE(M ...