宝塔 Nginx 反向代理动态修改订阅下载名称

在做节点订阅转换或反向代理时,下载下来的订阅名称往往会沿用上游的名称。
如果想改成自己的名称,可以通过 Nginx 反向代理 + 响应头重写 + 动态变量取值 来实现。

通过这种方式,可以根据访问路径动态生成下载名称,例如:

  • xx域名/a → 下载名称为 a
  • xx域名/allsub → 下载名称为 allsub
  • xx域名/测试 → 部分客户端可显示为 测试

一、先添加反向代理

先在宝塔面板中正常添加一条反向代理规则。
添加完成后,再进入该代理规则的 自定义配置。

二、在自定义配置中加入以下内容

set $download_name '';
if ($uri ~ "^/([^/?]+)$") {
    set $download_name $1;
}
proxy_hide_header Content-Disposition;
add_header Content-Disposition "attachment; filename=sub; filename*=UTF-8''$download_name" always;

三、配置说明

1. 动态提取路径名称

set $download_name '';
if ($uri ~ "^/([^/?]+)$") {
    set $download_name $1;
}

作用是从当前请求路径中提取最后一段内容作为下载名称。

例如:

  • 访问 /a,提取为 a
  • 访问 /allsub,提取为 allsub
  • 访问 /测试,提取为 测试

2. 隐藏上游返回的原始下载名称

proxy_hide_header Content-Disposition;

3. 自定义下载名称

add_header Content-Disposition "attachment; filename=sub; filename*=UTF-8''$download_name" always;

作用是重写下载响应头:

  • filename=sub:提供一个默认英文名,兼容部分客户端
  • filename*=UTF-8''$download_name:尝试使用动态路径名作为下载名称
最后修改:2026 年 03 月 28 日
咱们谁跟谁,用不着~