使用 nginx 监听已被监听的端口, reload 不会失败, 但会导致其他配置不生效. - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
vincentWdp
V2EX    NGINX

使用 nginx 监听已被监听的端口, reload 不会失败, 但会导致其他配置不生效.

  •  
  •   vincentWdp 204 天前 3000 次点击
    这是一个创建于 204 天前的主题,其中的信息可能已经有所发展或是发生改变。

    先叠甲: 我是业余运维.

    昨天, 在宝塔上对线上服务 A 修改 proxy_pass, 端口从 7511 改成 7501:

    location / { proxy_pass http://localhost:7501; } 

    更新配置后, 错误日志显示 upstream 依旧是 127.0.0.1:7511, 询问 AI, 反复折腾后, 依旧没能解决. 但在此期间, 没有任何报错, 包括在宝塔上保存配置, 在服务器上 nginx -t, nginx -s reload, nginx -T 等.

    推测配置被缓存了, 但为什么被缓存, 不清楚. 只能先重启 nginx 把服务搞上线.

    重启之前就隐隐觉得这次重启肯定不顺利, 毕竟 nginx -s reload 没有生效, 有些地方肯定有问题. 果然报错: 7503 端口被占用, nginx 无法启动.

    我瞬间就慌了, 在做了两次无效重复后, 理智回来了: nginx -T 查出 7503 在服务 B 的配置文件, 果断注释那一行然后成功启动 nginx, 线上服务恢复, 服务 A 也正常了.

    7503 端口本身就被一个 next.js 项目占用, 但不知道为什么还要写到 nginx 配置文件, 只能认为不会 nginx. 问了前端负责人, 到现在也没回我~~

    nginx version: nginx/1.20.2

    seansong
        1
    seansong  
       204 天前
    nginx -t && nginx -s reload
    busier
        2
    busier  
       204 天前 via iPhone
    @seansong -t 只是配置文件。又不能端口已占用!
    julyclyde
        3
    julyclyde  
       204 天前
    reload 并不会重新 listen
    我觉得你还是先仔细检查一下再说
    julyclyde
        4
    julyclyde  
       204 天前
    哦。明白了
    你是期望-t 失败或者-s reload 失败?
    vincentWdp
        5
    vincentWdp  
    OP
       204 天前
    @julyclyde 是的, 如果 -t 或 reload 失败那就可以查到错误. 但 -t 并没有.
    listen 7503 这条配置我事先并不知情
    julyclyde
        6
    julyclyde  
       204 天前
    @vincentWdp 你这个需求掉在夹缝里了
    想让它失败,那应该是一个 restart 操作。但是这个操作是有损的

    建议还是先管理好服务器上的程序吧。
    BreadKiller
        7
    BreadKiller  
       204 天前
    完整配置贴出来 把敏感信息打码
    coderzhangsan
        8
    coderzhangsan  
       204 天前
    nginx -t 可以检测 nginx 下所有配置文件 listen 端口冲突,因为这是基于当前 nginx 服务而言的,反向代理端口,是远程服务器端口,这是检测不到远程端口冲突的。
    duzhuo
        9
    duzhuo  
       204 天前
    只能说你无法阻止有人比你还业余
    strobber16
        10
    strobber16  
       204 天前
    7503 那一行谁加的,谁的锅。如果没有堡垒机日志那就只能和稀泥
    yinmin
        11
    yinmin  
       204 天前 via iPhone
    nginx -s reload 配置有问题会报出错误信息的。改配置后必须先 nginx -s reload 不出错才敢 service nginx restart ,否则就凉凉了。

    OP 用 nginx -s reload 看不到报错信息吗?
    realpg
        12
    realpg  
    PRO
       204 天前   1
    @yinmin #11
    @coderzhangsan #8

    你俩到现在都没看明白 OP 这个环境是发生了什么问题

    nginx 的配置没有问题

    是 nginx 新监听的端口在外部被别人占用了

    因为占用 所以 nginx -s reload 是不生效的


    其实 OP 的吐槽是对的,这是 nginx reload 的一个问题 只是不太业余的运维大概率不会把自己弄到这个场景, 然后就没踩过这个坑

    nginx reload 确实应该在这里给一个 warning 或者 error 出来
    coderzhangsan
        13
    coderzhangsan  
       203 天前
    @realpg 业余人员,多谢指点
    leconio
        14
    leconio  
       203 天前 via iPhone
    不同的 app 绑定同一个地址,同一个端口,同一种协议只会有一个 accept ,其他情况内核都能自动区分处理。
    julyclyde
        15
    julyclyde  
       203 天前
    @realpg 其实 @coderzhangsan 看出来问题了啊。
    SenLief
        16
    SenLief  
       203 天前 via iPhone
    你说你是业务运维,那估计就是有另外一个业余运维自己部署了反代 7503 ,没有和你说而已。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     999 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 18:46 PVG 02:46 LAX 11:46 JFK 14:46
    Do have faith in what you're doing.
    ubao 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