nginx 重启(Nginx工作进程未正常重启带来的问题)

本文目录
- Nginx工作进程未正常重启带来的问题
- nginx启动,重启,重新加载,以及前缀路径设置
- nginx重启出现问题记录(nginx重启 failed (98: Address already in use))
- 服务重启后nginx请求排队
- nginx平滑重启
- 重启nginx会清除缓存吗
- 树莓派重启nginx失败
- nginx重启-s和-c的区别
- centos7 下 nginx 启动,关闭,重启配置
Nginx工作进程未正常重启带来的问题
公司新上线了一个系统,通过Nginx进行反向代理,系统上线后,偶尔有请求出现请求找不到,响应 404 的问题。仅新系统会出现该问题,以前部署的系统没有;错误的请求随机出现,并不固定为某个特定的请求地址。Nginx部分配置如下:
跟踪日志发现无论全局错误日志还是新系统错误日志中,都没有对应记录,新系统访问日志中只有正常请求的记录,没有错误的记录。错误请求只有在全局访问日志文件中才有记录。最终在查看Nginx进程状态时,竟发现多了4个工作进程。
仔细观察发现多出来的进程是很久以前启动的了,执行 nginx -s reload 命令,异常进程也不会终止,于是猜测错误请求是由异常的进程在处理,而异常的进程是很久以前启动的,并没有加载新系统的配置文件,导致报错,同时这也是为什么错误记录只存在全局访问日志中的原因。 kill 掉异常进程后,果然没有再出现 404 的问题了。
至于Nginx进程出现异常的原因我就没有再深究了,网上有人不建议使用 nginx -s reload 命令重启nginx,有时候会无效,公司Nginx在不久做过升级,或许是升级操作不当导致的也说不定。
nginx启动,重启,重新加载,以及前缀路径设置
命令行里对nginx操作都需要运行nginx安装目录下的 sbin/nginx,默认会放在 /usr/local/openresty/nginx/sbin 目录下,如果不是openresty里装的nginx,应该就是没有openresty这一层目录的位置
这个路径比较长,所以一般会把它配在环境变量里
之后就可以在任意目录下直接使用nginx命令了,但是这种方法在关闭窗口后就没有用了。
修改环境变量有多种方法,这里贴个别的博客的 链接 ,写的比较详细
我这里使用了修改/etc/profile的方法,修改后,重启,对所有用户都生效
但是一般来说,我们肯定是需要启动我们自己编写的nginx.conf,所以需要在启动的时候指定nginx.conf的位置
这样写的话必须写绝对路径,写相对路径会被拼接到/usr/local/。。。的nginx默认路径后面去,肯定就找不到nginx.conf了,就报错了。同时在nginx.conf文件中的一些东西也必须写绝对路径,例如我写个content_by_lua_file,后面的路径也不能是相对路径
这是因为没有指定前缀路径,就会使用默认的前缀路径,导致所有相对路径都出现问题,通过 -p指定路径,这样就可以愉快地写相对路径啦
修改了文件后,需要让nginx加载这些修改了的信息,可以通过重启nginx的方式,但是nginx也可以不重启,直接重新加载这些内容
当然也可以查找nginx的进程号,再用kill 指令向它发送消息,实现让它停止,重启,重加载等等。
nginx重启出现问题记录(nginx重启 failed (98: Address already in use))
nginx新加了新的端口服务配置后,进行了重启。
在执行./nginx_control start 之后出现如下错误:
nginx重启 failed (98: Address already in use)
执行./nginx_stop之后再重启也没用
可能原因:可能nginx服务卡死了,导致端口占用,出现此错误
使用命令netstat -ntpl 来查看当前正在占用的端口情况,如下所示
使用命令killall -9 nginx
然后再执行./nginx_control restart 即可
Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。
各个参数含义:
-a (all)显示所有选项,默认不显示LISTEN相关
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化成数字。
-l 仅列出有在 Listen (监听) 的服务状态
-p 显示建立相关链接的程序名
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计
-c 每隔一个固定时间,执行该netstat命令。
***隐藏网址***
服务重启后nginx请求排队
1、可能nginx服务卡死了,导致端口占用,出现此现象使用命令netstat-ntpl来查看当前正在占用的端口情况。
2、PHP的内存不足,会出现服务重启后nginx请求排队。
nginx平滑重启
1:查询nginx主进程号
ps -ef | grep nginx
在进程列表里面找master进程,它的编号就是主进程号了
2.如果更改了配置就要重启Nginx,要先关闭Nginx再打开?这样会影响正常业务,其实可以向Nginx 发送信号,平滑重启。
平滑重启命令:
kill -HUP 主进称号
修改了配置文件后最好先检查一下修改过的配置文件是否正确,以免重启后Nginx出现错误影响服务器正常运行。
判断Nginx配置是否正确的命令如下:
nginx -t -c /usr/nginx/conf/nginx.conf
nginx -t -c /etc/nginx/conf.d/nginx.conf 根据实际配置文件路径
重启nginx会清除缓存吗
不会。nginx重启无法清除反向代理的缓存,可以清空安装目录下的proxy_cache文件夹里的内容来清除。Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like协议下发行。其特点是占有内存少,并发能力强。
树莓派重启nginx失败
1.首先查看nginx.conf文件查看pid对应的目录是否存在;
2.若目录不存在则创建目录并且包含pid文件
3.执行ps -ef |grep nginx 把主进程号保存到nginx.pid文件
问题解决,重启成功,需要注意的是:这种操作只能执行一次,因为nginx重启的时候会将nginx.pid文件删除了,导致下次重启的时候,重新出现上述问题。比较好的解决方案是:使用systemctl start nginx 后续重启都基于
systemctl restart nginx.
nginx重启-s和-c的区别
nginx重启-s和-c直接重启和保存后重启的区别。nginx-sreload平滑的重启。配置重载。nginx工作中,包括一个master进程,多个worker进程。c:使用指定的配置文件而不是conf目录下的nginx.conf。-s:reload重载。
centos7 下 nginx 启动,关闭,重启配置
打开这个教程: EA82.COM
启动 nginx
systemctl start nginx
一旦 nginx 启动后,就可以用nginx -s signal 命令来接管
快速关闭 nginx
nginx -s stop
平滑的关闭 nginx
nginx -s quit
重启 nginx
nginx -s reload
分割日志
nginx -s reopen
nginx 的工作原理
nginx 有一个 master 进程(老板)和多个 worker 进程(工人),master 进程负责阅读和评估配置,给 worker 进程提供保障,worker 进程实际处理请求。
nginx -s reload 命令加载修改后的配置文件, 命令下达后发生如下事件
Nginx 的 master 进程检查配置文件的正确性,若是错误则返回错误信息,nginx 继续采用原配置文件进行工作(因为 worker 未受到影响)
Nginx 启动新的 worker 进程,采用新的配置文件
Nginx 将新的请求分配新的 worker 进程
Nginx 等待以前的 worker 进程的全部请求已经都返回后,关闭相关 worker 进程
重复上面过程,直到全部旧的 worker 进程都被关闭掉。
nginx -s quit命令关闭 nginx 服务时,nginx 服务要等待工作进程将当前请求处理完才关闭。
也可以用 kill 命令杀死指定进程号的 nginx 进程
先通过 /var/run/nginx.pid 文件查看 nginx master 进程进程 id,
或者通过ps -ax|grep nginx查看进程
在使用kill -s quit 进程号 杀死进程

更多文章:
gcc编译器参数(深度linux的arm-linux-gnueabihf-gcc编译参数如何配)
2026年10月11日 19:30
asp是什么检查项目(医院血液检验项目RPR、TPPA、HIV-Ab各是什么意思)
2026年10月11日 10:20
汇编输出指令(用汇编语言循环指令在屏幕中间输出红底白字的“hello I am 720“)
2026年10月11日 07:20
本地搭建springboot项目(使用eclipse构建springboot项目)
2026年10月11日 06:20
java入门神器好用吗(java 7入门经典适合初学者自学用吗)
2026年10月11日 02:40
unix文件系统采用(Unix采用树形文件系统,其中“树形文件系统”什么意思)
2026年10月11日 00:50





