宝塔 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:尝试使用动态路径名作为下载名称