You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nginx配置$request_uri后镜像请求完全不转发问题排查

Nginx镜像请求无日志问题排查

问题根源

你修改后的proxy_pass配置存在核心逻辑错误,导致请求未正确转发到server-2:

1. 变量传递的路径解析问题

在Nginx 1.16版本中,当location /mirror使用proxy_pass http://server-2:80$request_uri时,$request_uri并不会被解析为原请求的URI,而是会被替换为当前location的路径/mirror,加上拼接逻辑错误,实际转发的请求格式不符合server-2的监听规则,导致请求被静默丢弃。

2. 正确的配置写法

要传递原请求的完整URI,有两种可靠的修改方式:

方式一:通过镜像路径携带原URI

listen 80;
location / {
    mirror /mirror$request_uri;
    proxy_pass http://server-1:8080;
}

location ~ ^/mirror(.*) {
    internal;
    proxy_pass http://server-2:80$1;
}

通过mirror /mirror$request_uri将原URI附加到镜像路径后,再用正则location提取并转发到server-2。

方式二:使用$uri+$args组合传递完整请求

listen 80;
location / {
    mirror /mirror;
    proxy_pass http://server-1:8080;
}

location /mirror {
    internal;
    proxy_pass http://server-2:80$uri$is_args$args;
}

$uri会获取原请求的路径部分,$is_args$args则会携带请求参数,组合后完整还原原请求的URI。

额外排查点

  • 查看server-1的Nginx错误日志(默认路径/var/log/nginx/error.log),确认是否存在连接server-2失败、格式错误等提示
  • 检查server-2的Nginx日志级别配置,确保设置为info或更详细级别,避免遗漏请求记录

内容的提问来源于stack exchange,提问作者The Crispy Toasty

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 22:55:04