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

NGINX代理转发如何移除URL路径前3段仅转发后2段?

Nginx代理转发:移除URL前3段路径的解决方案

你当前的配置问题在于,当proxy_pass仅指定域名时,Nginx会将匹配到的完整URI直接转发到目标域名。要实现只转发最后两段路径,需要利用正则捕获的分组来拼接目标路径。

修改后的配置

location ~ ^/([A-Za-z0-9]+)/([A-Za-z0-9]+)/([0-9]+)/([A-Za-z0-9]+)/([A-Za-z0-9._]+) {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_pass https://otherdomain.com/$4/$5;
}

关键说明

  • 正则表达式中的$4对应捕获的第4个分组(也就是<random-string-clint-id>部分),$5对应第5个分组(<random-file>部分)。
  • 在proxy_pass末尾加上/$4/$5,就能让Nginx只把这两段路径转发到目标域名,自动舍弃前3段。

可选优化(更通用的正则)

如果你的<random-string>可能包含字母数字以外的字符(比如下划线、短横线),可以把正则里的[A-Za-z0-9]+替换成[^/]+(匹配除了斜杠之外的任意字符),适配更多场景:

location ~ ^/[^/]+/[^/]+/[^/]+/([^/]+)/([^/]+) {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_pass https://otherdomain.com/$1/$2;
}

这里直接捕获最后两段,前3段用[^/]+匹配即可,写法更简洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 19:10:34