【问题标题】:Sending a zip file with Rails & nginx使用 Rails 和 nginx 发送 zip 文件
【发布时间】:2016-07-22 20:04:31
【问题描述】:

使用 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;
    }
}

编辑:

重新加载页面会导致文档被下载,因此我查看了每个请求的请求标头。它们应该是相同的,但它们不是。

在浏览器中打开

下载成功

唯一的区别是第一个我点击了一个链接(在新标签中打开链接下载并打开文件),我在第二个上刷新了页面。

编辑 2:

我用 webrick 再次尝试了它,它正在做同样的事情。

【问题讨论】:

  • 好吧,显示你如何发送它的控制器代码。

标签: ruby-on-rails nginx webrick


【解决方案1】:

您还应该发送文件头并确保它们是通过 nginx 传递的。您可以通过在网络选项卡中监视浏览器的请求和响应来轻松验证这一点

【讨论】:

  • 我应该验证哪些标题?内容类型(在 chrome 网络控制台中)正确显示 application/zip
  • 您是否也验证了您从 nginx 收到的标头?是的 application/zip 是正确的标题
  • 我可以看看你的 nginx 代理配置吗?
  • 我已将其添加到我的帖子中。
【解决方案2】:

【讨论】:

    猜你喜欢
    • 2013-07-07
    • 2016-06-16
    • 2019-01-06
    • 1970-01-01
    • 1970-01-01
    • 2016-11-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多