按照官网上的说法,使用 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. Intersection of Two Linked Lists | LeetCode

    利用两个栈,然后分别存储每一个链表. 继而,相继pop相同的节点. 有些细节需要注意,请看最后的返回值是如何处理的. /** * Definition for singly-linked list. ...

  2. android判断网络连接状态、联网类型、运营商

    /** * 获取上网方式 * * @param mContext * @return */ public static String getNetType(Context mContext) { St ...

  3. [LeetCode]题解(python):118-Excel Sheet Column Title

    题目来源 https://leetcode.com/problems/excel-sheet-column-title/ Given a positive integer, return its co ...

  4. Windows-002-U盘启动盘制作

    通常我们安装系统时,均采用光盘的形式安装,只是这种方法需要随时随地的带着光盘,还不容易保存.携带光盘.这时,一个 U盘启动盘 就是您的首选了,此种方式的好处多多,比如:忘记开机密码.系统备份.安装系统 ...

  5. imx6 framebuffer 分析

    分析imx6 framebuffer设备和驱动的注册过程. Tony Liu, 2016-8-31, Shenzhen 相关文件: arch/arm/mach-mx6/board-mx6q_sabre ...

  6. 1.后台如何获取 jquery get方式的ajax的参数

    1. update.jsp 1.2 默认是dataType是json getJSON: function( url, data, callback ) { return jQuery.get(url, ...

  7. 使用oracle外部表进行数据泵卸载数据

    数据泵卸载Oracle9i引入了外部表,作为向数据库中读取数据的一种方法.Oracle 10g则从另一个方向引入了这个特性,可以使用CREATE TABLE语句创建外部数据,从而由数据库卸载数据.从O ...

  8. jq的核心基础

    1.jq代码的风格    jq对象$().css();jQuery().css();  //获取jquery对象 示例$().css('background':'red').css('font-siz ...

  9. WPF 应用程序使用 Multilingual App Toolkit

    应用程序支持多语言,使用 Multilingual App Toolkit是一个不错的解决方案. Multilingual App Toolkit下载地址: https://visualstudiog ...

  10. 七参数计算正确性验证——Coord软件使用

    我计算了一套七参数,但是别人说计算结果不正确,我只好验证一下. 最后知道为啥算错了,原来是尺度K的单位问题,我计算七参数的单位是PPM,而下面软件的单位是m所以需要除以1000000进行计算. 下面是 ...