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

时间:2021-03-25 13:11:20

标签: 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/data-2021-03-25.pdf 下。

如何让应用机器上的文件可以从代理服务器下载,请帮忙。

提前致谢。

1 个答案:

答案 0 :(得分:1)

我会简单地在 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_pass 来代理请求。

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

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

这在我的演示应用中有效。