我在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)服务器只能访问局域网。
答案 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”