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

Nginx配置proxy_pass带变量时/rest路径请求返回404如何解决

问题根因

这是Nginx proxy_pass 指令结合变量使用时的典型路径拼接规则差异导致的:

  • 当 proxy_pass 的值是纯静态域名(不带变量)时,Nginx会自动把location匹配到的前缀路径替换为proxy_pass后面指定的路径,你原本的写法是生效的。
  • 当 proxy_pass 的值包含变量(你这里用了$back_upstream动态变量)时,Nginx会跳过自动路径替换逻辑,直接把完整的原始请求URI拼接到proxy_pass指定的地址后面。

你访问http://my-url/rest/abc时,后端实际收到的请求路径是/rest//rest/abc,路径前缀重复导致404;而/api相关的配置因为proxy_pass后面没有加额外路径,拼接后的路径刚好符合预期,所以访问正常。


修复方案

直接修改/rest/匹配块的proxy_pass配置,删掉末尾多余的/rest/路径即可:

location /rest/ {
    proxy_pass http://$back_upstream;
}

如果你需要自定义路径转发规则,也可以用rewrite指令显式控制路径:

location /rest/ {
    # break表示执行rewrite后不再匹配其他location
    rewrite ^/rest/(.*)$ /rest/$1 break;
    proxy_pass http://$back_upstream;
}

配置修改完成后,先执行nginx -t校验配置是否合法,校验通过后执行nginx -s reload重载配置即可生效。


内容的提问来源于stack exchange,提问作者Andy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 20:15:07