nginx -s reload 但是新配置经常不生效,可能会有哪些原因呢?

2018 年 12 月 27 日
 Livid
17148 次点击
所在节点    NGINX
29 条回复
Trim21
2018 年 12 月 27 日
遇到过几次, 是有配置写错了, 但是 nginx -s reload 的时候没有把错误报出来. 手动关闭 nginx 再启动的时候才看到报错信息.
ericls
2018 年 12 月 27 日
@Trim21 先 nginx -t
v2gba
2018 年 12 月 27 日
先用-t 测试下配置文件

-s 失败就会继续用老的
Showfom
2018 年 12 月 27 日
可能当前进程太多了导致没 reload 上吧,试试 force-reload

systemctl force-reload nginx
ericFork
2018 年 12 月 27 日
看看是不是有一些 worker 仍然还在处理当前未完请求( shutting down 状态)
Actrace
2018 年 12 月 27 日
挂了第三方模块无法结束进程或者是当前进程尚未结束。
nginx -s reload 是平滑重启,不会强制结束正在工作的连接,需要等所有连接都结束才会重启。
Cbdy
2018 年 12 月 27 日
有的操作要重启才能生效
quqiuzhu
2018 年 12 月 27 日
没有 sudo 么
raycloud
2018 年 12 月 27 日
跟配置类型有关吧,之前遇到过某个配置必须重启才生效,忘记是哪个了
ihipop
2018 年 12 月 27 日
以前遇到过,新增端口监听,域名绑定新虚拟主机之类的,需要完整重启,看什么类型的操作,不是所有的都可以 reload 加载
aniua
2018 年 12 月 27 日
-s reload 类似于 apache 的 graceful。
配置文件错误会报错,旧的 worker 还是一样跑,就像没 reload 一样。
正确的话就会开新 worker,把新的请求给到新 worker,旧的 worker 不再接收新连接,等所有连接结束后旧的 worker 会退出。
如果配置没有生效说明你可能是通过未 reload 前已经保持的长连接发起的请求。
1daydayde
2018 年 12 月 27 日
pid 丢了?
linchengzzz
2018 年 12 月 27 日
先 nginx -t 查看配置文件,等 配置文件 successful 之后 再 nginx -s reload
34
2018 年 12 月 27 日
证书好像要 force-reload
ooeyunarika
2018 年 12 月 27 日
旧的 worker 进程还在处理请求,有些第三方模块会导致旧的 worker 挂起甚至僵尸,回收不了,还有就是 nginx -t 先检查配置再 reload
kernel
2018 年 12 月 27 日
reload 不会打印错误,而是静默失败,这个太坑爹了
kran
2018 年 12 月 27 日
配置文件正确也会有这种情况,遇到了只好重启,不清楚原因
mywaiting
2018 年 12 月 27 日
每次 nginx reload 记得这样敲命令,反正我觉得这是 nginx reload 的最佳实践了

sudo nginx -t && sudo nginx -s reload && sudo tail -f /var/log/nginx/error.log

可以直接搞个命令的 alias,不过一定记得这样敲
he583899772
2018 年 12 月 27 日
配置有错误,看不到错误吧
virusdefender
2018 年 12 月 27 日
reload 的时候得所有的连接都断开,老连接老配置,新连接才是新配置

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://study.congcong.us/t/521361

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX