多个Nginx进程运行导致配置加载失效问题

问题描述

在用nginx进行接口代理时,修改配置文件后,重新加载nginx,却发现无论怎么修改配置文件,都无法生效,接口一直无法代理成功。查看了之前做的接口代理,配置也并无二致,但代理是成功的,十分奇怪,进行问题排查。

问题排查

在保证接口可用,配置无错的情况下,进行以下过程排查:

  • 使用 nginx -s reload 命令进行配置重载,配置不生效

  • 使用命令重启 nginx ,配置不生效

      # 关闭nginx
    nginx -s stop # 开启nginx
    start nginx
  • 删除之前可用配置,重启nginx,发现居然还能继续使用,说明修改的配置文件没有正确加载。

  • 接着关闭nginx,再次访问网页也能正常响应,说明nginx还在运行。

  • 之后打开任务管理器查看服务进程,发现居然有4个正在运行的nginx进程,问题已经发现了。nginx运行时应该只有2个nginx进程(1个master进程,1个worker进程(默认配置是1个)),而关闭时则没有nginx进程。

另:

nginxwindows上启动会有两个nginx.exe进程,这是因为nginxwindows上使用了master-worker模式。

master进程负责监听端口,接收客户端的请求,并将请求分发给worker进程处理。

worker进程负责处理请求。处理传过来的客户端请求,并将处理结果返回给客户端。

所以可以推断出配置加载无法生效的原因了:windows服务器上运行了多个nginx进程,加载了旧配置的nginx进程一直在运行处理请求和响应,而加载了新配置的nginx虽然也在运行但没有进行请求的处理。修改的是加载了新配置的nginx,但处理请求的是加载了旧配置的nginx,所以造成了修改了配置文件但发现不生效的现象。

问题解决

通过查询资料与实验可知,每执行一次 start nginx,都会创建新的nginx进程,同时创建新的 nginx.pid文件,但只有最先启动的 nginx 进程才会处理到请求。

知道了问题缘由就很好处理了。

  • 先关闭所有的nginx服务进程
  • 进入nginx目录,执行 start nginx 命令启动服务
  • 使用 nginx -s reload 重载修改后的配置文件

需要注意的是,之后要运行nginx前需要确认原nginx进程已关闭。

附录

nginx.pid

nginx.pid 是管理进程的重要文件之一,它记录着 nginx master 进程的进程id。

它的主要作用有:

  • 记录着 nginx master 进程的进程id,管理nginx进程
  • 在关闭nginx 服务时,需要用到nginx.pid文件类终止相关进程,避免占用系统资源

多个Nginx进程运行导致配置加载失效问题的更多相关文章

  1. 深入理解 Laravel 中 config 配置加载原理

    Laravel的配置加载其实就是加载config目录下所有文件配置.如何过使用php artisan config:cache则会把加载的配置合并到一个配置文件中,下次请求就不会再去加载config目 ...

  2. spring配置加载2次实例问题。

    WEB.XML 中SPRING 配置及重复加载问题 Posted on 2012-11-13, 15:48, by tmser, under java 周边 . 项目内存溢出,mat 查看了一下发现s ...

  3. Expressjs配置加载器

    有些东西就是操刀开干,没什么好解释的.... 问题引入 解决问题 直接上码 env.js index.js 使用方法 初始化 使用方法 写在最后 问题引入 大家都知道在日常的研发过程中,我们的程序会有 ...

  4. 字节码编程,Javassist篇三《使用Javassist在运行时重新加载类「替换原方法输出不一样的结果」》

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 通过前面两篇 javassist 的基本内容,大体介绍了:类池(ClassPool) ...

  5. 关于flume配置加载(二)

    为什么翻flume的代码,一方面是确实遇到了问题,另一方面是想翻一下flume的源码,看看有什么收获,现在收获还谈不上,因为要继续总结.不够已经够解决问题了,而且确实有好的代码,后续会继续慢慢分享,这 ...

  6. 关于flume配置加载

    最近项目在用到flume,因此翻了下flume的代码, 启动脚本: nohup bin/flume-ng agent -n tsdbflume -c conf -f conf/配置文件.conf -D ...

  7. Java实现配置加载机制

    前言 现如今几乎大多数Java应用,例如我们耳熟能详的tomcat, struts2, netty…等等数都数不过来的软件,要满足通用性,都会提供配置文件供使用者定制功能. 甚至有一些例如Netty这 ...

  8. 异常处理之IIS配置加载出错

    问题详情:  一台部署在海外服务器,在管理IIS过程中,出现问题 There was an error when trying to connect. Do you want > to rety ...

  9. Springboot学习01- 配置文件加载优先顺序和本地配置加载

    Springboot学习01-配置文件加载优先顺序和本地配置加载 1-项目内部配置文件加载优先顺序 spring boot 启动会扫描以下位置的application.properties或者appl ...

  10. Java运行时动态加载类之ClassLoader

    https://blog.csdn.net/fjssharpsword/article/details/64922083 *************************************** ...

随机推荐

  1. spring cloud gateway在使用 zookeeper 注册中心时,配置https 进行服务转发

    本文为博主原创,转载请注明出处: 在spring cloud gateway 为 2.x 的版本的时候,可以通过引入 ribbon ,在进行过滤器 LoadBalancerClientFilter 进 ...

  2. css : object-fit 兼容 ie 的解决方案

    通过 github 搜索 object-fit ie  ,  借鉴大佬兼容 ie 的经验. 下载解压到文件夹 , 打开测试目录 , 查看 demo 使用 ie 打开demo , 查看显示效果 : 代码 ...

  3. 海思Hi35xx 通过uboot查看flash指定地址的数据

    ​ 前言 在实际应用中有遇到过设备放置一段时间后设备不能启动的问题,uboot 完全没有响应,类似于flash中的数据被擦洗掉一样. 网上有介绍说是nandflash 不稳定,高温或是静电会导致nan ...

  4. [转帖]从Linux源码看TIME_WAIT状态的持续时间

    https://zhuanlan.zhihu.com/p/286537295 从Linux源码看TIME_WAIT状态的持续时间 前言 笔者一直以为在Linux下TIME_WAIT状态的Socket持 ...

  5. [转帖]tidb的分区表

    https://docs.pingcap.com/zh/tidb/v6.5/partitioned-table 分区类型 本节介绍 TiDB 中的分区类型.当前支持的类型包括 Range 分区.Ran ...

  6. [转帖]如何使用 sed 命令删除文件中的行

    https://zhuanlan.zhihu.com/p/80212245 sed 命令是 Linux 中的重要命令之一,在文件处理方面有着重要作用.可用于删除或移动与给定模式匹配的特定行.-- Ma ...

  7. [转帖]煮饺子与 docker、kubernetes 之间的关系

      前言:云原生的概念最近非常火爆,企业落地云原生的愿望也越发强烈.看过很多关于云原生的文章,要么云山雾罩,要么曲高和寡. 所以笔者就有了写<大话云原生>系列文章的想法,期望用最通俗.简单 ...

  8. [转帖]龙芯总强调同频性能,是因奔腾4要到25+GHz才比得上酷睿11代单核

      https://baijiahao.baidu.com/s?id=1734320620568707041 闲话不说,先上图,是SPEC CPU 2006 int(单任务)测试的成绩: 上图中的成绩 ...

  9. [转帖]好用的parallel命令

    https://www.cnblogs.com/codelogs/p/16060043.html 原创:打码日记(微信公众号ID:codelogs),欢迎分享,转载请保留出处. 简介# 有时,我们需要 ...

  10. React中函数组件与类组件的两种使用

    React 创建组件的两种方式 函数组件:使用js函数创建的组件 约定1:函数名称必须以大写字母开头 约定2:函数组件必须要有返回值. 如果返回值为null.表示不渲染任何内容. return nul ...