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

Nginx代理路径重写问题:localhost路径代理到外部域名报404

Nginx代理路径问题解决方案

问题出在Nginx的proxy_pass路径拼接逻辑上:当proxy_pass的目标URL包含具体路径(比如你的/file.txt)时,Nginx会自动把location匹配到的URI部分追加到该路径前面。你的规则匹配了/1045,所以最终拼接成了/1045/file.txt,导致目标URL多了一层路径。

修复方案

使用rewrite规则剥离掉请求路径中多余的前缀部分,再进行代理:

location ~* ^/([^/]+)/file.txt$ {
    # 剥离开头的/[数字段],只保留/file.txt
    rewrite ^/[^/]+(.*)$ $1 break;
    proxy_pass $scheme://$1.external.com;
}

说明

  1. 调整后的location精确匹配/xxx/file.txt格式的请求,避免误代理其他路径
  2. rewrite规则将/1045/file.txt转换为/file.txt,再通过proxy_pass指向对应的外部域名,最终目标URL就是https://1045.external.com/file.txt
  3. 如果需要匹配更多类似的文件(不只是file.txt),可以把规则改成^/([^/]+)/(.+)$,然后rewrite为/$2,proxy_pass保持不变

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 22:14:53