网站首页 > 精选文章 / 正文
背景:
生产的网关代理NGINX,在修改配置后重启reload后,不能加载新配置,在error.log 及系统日志文件/var/log/message中没有发现相关日志。
同时还发现个别以前的配置的代理 curl URL 后,总是302 报错。但是在测试环境缺没有报错。
处理:
./nginx -s reload 是无效的,这种方式重启PID是不变的【ps -ef |grep master】
又不能 ./nginx -s stop ,应为生产有主备KEEPALIVE模式,手动停掉再重启,不但要申请停机时间,可能也会VIP漂移。当然最后还是向领导申请了。
最后想到之前配置的开机重启的配置sysytem start nginx.server [具体配置内容在文章后面]
采用这个方式重启可能会快些。但是没想到这种方式的重启和reload是不通的
它过程是开启--》停STOP--》开启
sysytem restart nginx.server ##完全重启 Nginx 服务
这个问题重启后问题解决。新配置的配置都好使了。这个诡异的事件,我认为是bug,但是网上的人说是长连接问题,也有人说是缓存问题。
重启过程差异
./nginx -s reload 和 systemctl restart nginx.service 是两种不同的方式来重启 Nginx 服务,下面详细介绍它们的区别:
- ./nginx -s reload平滑重启:此命令会触发 Nginx 的平滑重启机制。Nginx 主进程在收到 reload 信号后,会尝试解析新的配置文件,如果解析成功,会启动新的工作进程,并逐步关闭旧的工作进程,期间不会中断正在处理的连接,保证服务的连续性。配置加载:主要目的是重新加载配置文件,使新的配置生效,而不会重新启动整个 Nginx 服务。
- systemctl restart nginx.service完全重启:systemctl restart 命令会先停止 Nginx 服务,然后再重新启动它。在停止过程中,所有正在处理的连接都会被中断,直到服务重新启动完成。服务管理:不仅会重新加载配置文件,还会重新初始化整个 Nginx 服务,包括重新读取所有的系统环境变量、重新创建进程等
配置
[root@master ~]# cat /usr/lib/systemd/system/nginx.service
[Unit]
Description=nginx server 1.24.0
After= network-online.target local-fs.target
[Service]
Type=forking
ExecStart=/usr/local/nginx-1.24.0/sbin/nginx
ExecStop=/usr/local/nginx-1.24.0/sbin/nginx -s stop
ExecReload=/usr/local/nginx-1.24.0/sbin/nginx -s reload
PrivateTmp=true
[Install]
WantedBy=multi-user.target
###
systemctl enable nginx.server
systemctl status nginx
Tags:nginx重新加载配置文件
猜你喜欢
- 2025-03-23 Nginx的常用命令及详细配置(负载均衡、动静分离、加'/'的区别)
- 2025-03-23 在nginx配置文件中设置nginx缓存(nginx 开启缓存)
- 2025-03-23 DeepSeek官方部署教程,专业版github部署教程来袭!
- 2025-03-23 注册windows系统服务(电脑服务注册表怎么进入)
- 2025-03-23 Nginx 最全操作——nginx常用命令(3)
- 2025-03-23 Nginx 实现负载均衡 java web 实例教学
- 2025-03-23 NGINX 配置修改完 是不是 nginx -s reload 就可以,还是需要重启NGINX