一个关于 nginx 的 mirror 的齐怪现象,有没有熟悉的大佬给指点下 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
mosliu
V2EX    NGINX

一个关于 nginx 的 mirror 的齐怪现象,有没有熟悉的大佬给指点下

  •  
  •   mosliu
    mosliu 2024-04-03 11:06:43 +08:00 1755 次点击
    这是一个创建于 622 天前的主题,其中的信息可能已经有所发展或是发生改变。

    问题

    使用 nginx 的 mirror 功能时,mirror 的服务器不能响应 mirror 的需求,但是 mirror 的请求再套一层 nginx 就又可以了。

    架构基础情况

    n 是 nginx 服务器 nginx 版本 v1.22.1 是通过 apt 安装的

    a ,b 是跑着同样的 springboot 写的服务的服务器。

    配置 n 的 nginx 转发到 a mirror 到 b

    触发动作:向 n 的 nginx 请求

    碰到一个奇怪的问题:

    nginx 直接转发请求到 a a 正常响应

    nginx 直接转发请求到 b b 正常响应

    不开服务,同样使用 nc -lk 8881 会发现,a 和 b 接收到的信息除了 Host 是一样的。服务不对 host 有限制。

    nginx 转发请求到 a 并 mirror 到 b a 正常 b 的服务不响应

    nginx 转发请求到 b 并 mirror 到 a b 正常 a 的服务不响应

    通过在 b 上 nc 转发 nc -l 8881 | tee >(nc localhost 8882) 可以观察到确实转发了,但是 b 无响应,A 同理

    最神奇的是:当我想着记录下具体的日志。于是在 b 上在开一个 nginx 该 nginx 转到本机的 b 服务。

    n mirror->b ningx-> b 这个时候,b 就正常了能接收请求了。

    补充说明

    在 springboot 服务中,我也写了 filter ,对所有的请求进行打印。会发现失败的时候根本没有打印输出。也就是没有检测到请求,可是 nginx 确实转发了。

    但是 b 就是对 mirror 的请求无反应。

    nginx 的配置

    upstream backend { server 172.23.16.180:8881; } upstream test_backend1 { server 172.23.16.182:8881; # 8881 是服务的端口,8883 是 nginx 的端口。 } server { listen 8881; location / { mirror /mirror1; mirror_request_body on; # 加与不加一样 proxy_pass http://backend; } location = /mirror1 { internal; proxy_pass_request_body on; # 请求是 POST 需要有这个 proxy_pass http://test_backend1$request_uri; } } 
    4 条回复    2024-04-03 14:13:24 +08:00
    rrfeng
        1
    rrfeng  
       2024-04-03 11:18:36 +08:00 via Android
    mirror 只负责把请求发出去就结束了,不管它响应的。可能是发完直接关了连接导致后端没有响应。
    抓包看一眼就知道了。
    mosliu
        2
    mosliu  
    OP
       2024-04-03 13:39:58 +08:00
    @rrfeng 这么想过 不过感觉不一定对为啥再套一层就没事了呢。。 奇怪在再套一层居然恢复了。
    mosliu
        3
    mosliu  
    OP
       2024-04-03 14:06:31 +08:00
    继续研究 添加了 `proxy_set_header Host $host;` 解决。
    理论上是服务的问题。

    但是 我没有做 host 过滤啊。

    另外 这里两个后端 检查发现 直接转发的是`Host: backend` mirror 的是`Host: test_backend1`
    没什么区别啊。。
    而且又包了一层 nginx 就 ok 了 这就很迷。。。
    yumusb
        4
    yumusb  
       2024-04-03 14:13:24 +08:00
    wireshark 解君愁
    /div>
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     891 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 21:49 PVG 05:49 LAX 13:49 JFK 16:49
    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