使用反向代理Nginx在远程服务器中下载文件

使用反向代理Nginx在远程服务器中下载文件,nginx,proxy,reverse,Nginx,Proxy,Reverse,我有一台运行Nginx反向代理的服务器 我们的应用程序运行在另一台服务器上,该服务器使用这个Nginx代理提供服务。下面是我使用过的配置,它工作正常 location / { rewrite ^/(.*) /$1 break; proxy_pass http://10.0.0.121:8000; } 我需要在应用程序机器(10.0.0.121)中下载一个pdf文件,它位于/home/ubuntu/app/pdf/d

我有一台运行Nginx反向代理的服务器

我们的应用程序运行在另一台服务器上,该服务器使用这个Nginx代理提供服务。下面是我使用过的配置,它工作正常

location / {
                rewrite ^/(.*) /$1 break;
                proxy_pass http://10.0.0.121:8000;
        }
我需要在应用程序机器(10.0.0.121)中下载一个pdf文件,它位于/home/ubuntu/app/pdf/data-2021-03-25.pdf下

如何使应用程序计算机中的文件可以从代理服务器下载,请帮助


提前感谢。

我只需在
10.0.0.121
上安装另一个nginx实例,并进行如下配置。非生产准备就绪

server {
  listen 8080;
  server_name ...;

  root /home/ubuntu/app/pdf;

  location = /data-2021-03-25.pdf {
     try_files $uri $uri/ =404;
  }

server {
  listen 8090;

  location / {
   proxy_pass http://localhost:8080;
  }
}
}
未测试,但此服务器将处理为文件提供服务的请求。然后您可以在另一台服务器上使用
proxy\u pass
来代理请求

但是除了这个选项之外,您还可以使用python、perl、php、java、nodejs、assembly或您想要使用的任何编程语言来打开http端口并在传入请求时为文件提供服务。这真的是你的选择

只要确保如果要使用代理解决方案,您正在清理代理上的请求。例如通过发送类似于
curl-v localhost:8090/pdf/./other/file
的请求,在上面的设置中进行一个小改动,您就可以作弊并从home/app目录获取任何其他文件。因此,请确保您使用的是
root
(/home/ubuntu/app/pdf/)指令,并在代理服务器上设置与pdf文件匹配的位置

这在我的演示应用程序中起了作用