You need to enable JavaScript to run this app. 如何在现有Nginx反向代理环境下实现远端应用服务器PDF文件下载
优惠活动
大模型
产品
解决方案
定价
更多

如何在现有Nginx反向代理环境下实现远端应用服务器PDF文件下载

Nginx反向代理开放指定PDF访问的配置方法

核心思路

完全不用改动你现有的业务转发逻辑,只要在原有server配置里,加一段优先级比location /更高的专属匹配规则就行——Nginx的匹配规则是越精确的路径优先级越高,新增的规则会优先于全量转发的/规则生效,不会影响现有业务的正常访问。

先理清最容易踩的坑

你要访问的PDF存放在10.0.0.121那台应用服务器上,不是当前运行Nginx的代理服务器的本地磁盘。很多人第一反应会在Nginx上配置root /home/ubuntu/app/pdf来指向文件路径,这完全是错误的——Nginx读文件只会遍历自己本机的文件夹,你指的路径在Nginx机器上根本不存在,配完直接报404。

具体配置修改

在你原有location /规则的同级位置,插入对应配置块即可:

单文件定向访问配置

如果只需要开放这一个PDF的访问权限,写精确匹配规则:

# 精确匹配指定PDF的访问路径
location = /downloads/data-2021-03-25.pdf {
    # 把这个请求转发到远端应用服务器,按应用服务器的实际服务能力调整proxy_pass路径
    # 如果8000端口的业务应用本身已经能正确读取这个PDF文件,直接转过去就可以
    proxy_pass http://10.0.0.121:8000/pdf/data-2021-03-25.pdf;
    # 强制浏览器弹出下载提示,不会直接在浏览器里渲染打开PDF
    add_header Content-Disposition "attachment; filename=data-2021-03-25.pdf";
    # 关闭代理缓冲,大文件下载速度会更快
    proxy_buffering off;
}

整目录开放配置

如果后续需要开放/home/ubuntu/app/pdf/目录下所有文件的访问权限,换成前缀匹配规则即可:

# 匹配所有/pdf/开头的请求,优先级高于通用的/规则
location ^~ /pdf/ {
    # 举个实际场景:你在10.0.0.121的PDF目录下用极简静态服务对外(比如cd /home/ubuntu/app/pdf && python3 -m http.server 8001),就可以按下面的配置映射路径
    # 外部请求 /pdf/xxx.pdf 会被转成 http://10.0.0.121:8001/xxx.pdf,刚好对应静态服务的根目录文件
    proxy_pass http://10.0.0.121:8001/;
    proxy_buffering off;
}

配置生效验证

  • 改完配置先执行nginx -t,检查有没有语法错误,避免手滑打错字符
  • 确认语法没问题后,执行nginx -s reload让配置生效,不会中断现有业务服务
  • 从外部网络访问http://你的代理服务器IP/downloads/data-2021-03-25.pdf,测试能不能正常触发PDF下载。

额外说明

  • 你原有配置里的rewrite ^/(.*) /$1 break;其实没有实际作用,也不用特意删掉,留着不影响功能
  • 绝对不要在Nginx上配置指向远端服务器路径的本地root/alias规则,否则一定会触发404/403权限报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.29 00:27:04