问题描述
我们的应用程序在另一台服务器上运行,该服务器使用此 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_pass
来代理请求。
但是除了这个选项,你还可以使用 python、perl、php、java、nodejs、程序集或任何你想用来打开 http 端口并在传入请求上提供文件的编程语言。这真的是你的选择。
只要确保如果您要使用代理解决方案,您正在清理代理上的请求。例如。通过对上述设置稍作更改,您可以通过发送类似 curl -v localhost:8090/pdf/../other/file
的请求来欺骗并从您的 home/app 目录中获取任何其他文件。因此,请确保您正在使用 root
(/home/ubuntu/app/pdf/) 指令并设置与代理服务器上的 pdf 文件匹配的位置。
这在我的演示应用中有效。