nginx -s reload 但是新配置经常不生效,可能会有哪些原因呢? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Livid
57.81D
478.1D
V2EX    NGINX

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

  •  
  •   Livid
    PRO
    2018-12-27 02:56:01 +08:00 16904 次点击
    这是一个创建于 2486 天前的主题,其中的信息可能已经有所发展或是发生改变。
    29 条回复    2018-12-27 23:13:11 +08:00
    Trim21
        1
    Trim21  
       2018-12-27 03:26:49 +08:00
    遇到过几次, 是有配置写错了, 但是 nginx -s reload 的时候没有把错误报出来. 手动关闭 nginx 再启动的时候才看到报错信息.
    ericls
        2
    ericls  
       2018-12-27 03:28:12 +08:00 via iPhone
    @Trim21 先 nginx -t
    MrGba2z
        3
    MrGba2z  
       2018-12-27 03:40:36 +08:00 via Android
    先用-t 测试下配置文件

    -s 失败就会继续用老的
    Showfom
        4
    Showfom  
    PRO
       2018-12-27 03:47:04 +08:00
    可能当前进程太多了导致没 reload 上吧,试试 force-reload

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

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

    可以直接搞个命令的 alias,不过一定记得这样敲
    he583899772
        19
    he583899772  
       2018-12-27 09:42:14 +08:00
    配置有错误,看不到错误吧
    virusdefender
        20
    virusdefender  
       2018-12-27 09:57:22 +08:00
    reload 的时候得所有的连接都断开,老连接老配置,新连接才是新配置
    khy
        21
    khy  
       2018-12-27 10:01:09 +08:00
    碰到过几次,都是配置写错[捂脸],可以-t 先。
    TrickWu
        22
    TrickWu  
       2018-12-27 10:01:43 +08:00
    没遇到过,一般 reload 之后如果有错的话会报错 没报错就生效了。
    cominghome
        23
    cominghome  
       2018-12-27 10:08:04 +08:00
    一些改动,reload 貌似是不生效的,一定要 restart。
    NsLib
        24
    NsLib  
       2018-12-27 10:09:43 +08:00   1
    分两种情况:
    1. nginx -t 不通过,此时 nginx -s reload 不会生效
    2. nginx -s reload 是 graceful shutdown 语义;
    如果配置正确的话, 老的 worker 进程停止 accept 新连接, 处理完当前连接后主动退出;
    新 worker 处理新请求

    看你描述的经常不生效,应该是没有 nginx -t 导致的
    Infernalzero
        25
    Infernalzero  
       2018-12-27 13:40:00 +08:00
    你们说的-t 问题其实可以忽略,这种一般 reload 后都马上看提示就知道的了,我估计楼主说的是 reload 了没有错误信息,配置没有语法错误,但是没有使用新的配置。
    这种情况只能 stop 了以后再起才生效
    daydaydayup
        26
    daydaydayup  
       2018-12-27 14:28:28 +08:00 via iPhone
    跟进这个帖子,希望知道最后的解决方法以后少填坑
    justicelove
        27
    justicelove  
       2018-12-27 14:32:26 +08:00
    先 -t 检测配置是否正确
    firebroo
        28
    firebroo  
       2018-12-27 21:01:04 +08:00 via Android
    我也遇到过一次,是在大版本升级的时候,没来得及保留现场,lz 如果可以稳定复现,可以看看各 worker 的 pid 是否变化?
    Livid
        29
    Livid  
    MOD
    OP
    PRO
       2018-12-27 23:13:11 +08:00
    看起来最大的嫌疑就是那些涉及额外网络连接的模块,我排查一下。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3412 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 10:25 PVG 18:25 LAX 03:25 JFK 06:25
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86