如何通过rails应用程序从防火墙服务器代理文件

时间:2011-02-03 13:30:01

标签: ruby-on-rails ruby proxy nginx

我在Nginx上运行了一个rails应用程序,需要提供从另一个内部服务器下载的文件。内部服务器使用动态URL生成要下载的文件,因此它不是位于文件夹中的静态文件。 rails服务器和带有文件的服务器都在同一个LAN上,但只有rails服务器在端口80上对公众开放。

此外,我想要提供的文件大小在5GB到200GB之间,所以如果可能的话,我不想为整个下载绑定rails进程。有没有办法用Net :: HTTP + send_data做到这一点?或者也许某种Nginx代理规则?

从局域网内部,您可以下载带有以下网址的文件:

http://username:password@192.168.0.5/export?uuid=1234567890

问题是1)没有该URL的访问控制,用户/传递你可以通过传入它的uuid参数下载你想要的任何文件,2)服务器只能访问局域网。

1 个答案:

答案 0 :(得分:0)

我按照这里的教程找出了这个问题的答案:http://kovyrin.net/2010/07/24/nginx-fu-x-accel-redirect-remote/

要处理HTTP Basic身份验证,您需要将此行添加到您的nginx配置中:

proxy_set_header Authorization "Basic BASE64_USER_PASS";

其中BASE64_USER_PASS是您的用户名和密码的base64字符串,格式为“user:pass”