使用nginx作为代理时,我无法下载zip文件(使用send_file
)。
def download
send_file file_path, filename: "file.zip"
end
在没有nginx的情况下运行(仅限webrick)它运行正常但是使用nginx代理它会在浏览器中打开它:
Nginx代理配置:
server {
server_name mydomain.com;
location / {
proxy_pass http://localhost:3001;
proxy_set_header Host $host;
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/keys/app.htpasswd;
}
}
重新加载页面会导致文档被下载,因此我查看了每个请求的请求标头。它们应该是相同的,但它们不是。
唯一的区别是我点击链接的第一个链接(在新标签页中打开链接并打开文件),然后我在第二个页面刷新页面。
我再次尝试使用webrick,它正在做同样的事情。
答案 0 :(得分:0)
您还应该发送文件头并确保它们通过nginx传递。您可以通过在网络标签中监控浏览器的请求和响应来轻松验证
答案 1 :(得分:0)
原来是导致问题的是turbolinks。我必须将data: {turbolinks: false}
添加到我的link_to
代码中。
另请参阅:Rails 4, asset pipeline causes user downloadable files to be downloaded twice,rails won't send_data as file,Ruby on Rails send_file, code in controller action running twice,Ruby on Rails send_file doesn't work until i refresh the page?