【问题标题】:nginx proxy_pass behavior when downloading a file下载文件时的 nginx proxy_pass 行为
【发布时间】:2016-03-25 08:45:12
【问题描述】:

我对 nginx 中 proxy_pass 的行为有疑问。 假设 nginx 配置具有以下位置属性:

location /a.mp4 {
    proxy_pass http://3rd_party_domain/a.mp4;
}

(请注意,语法可能不正确,但您可以理解我的意思)

问题:当用户尝试在我的域上下载 a.mp4 时,实际流量来自哪里?我可以想到以下几种可能的情况:

#1 3rd_party_domain -----> client
#2 3rd_party_domain -----> my_domain -----> client

我希望 #1 是这种情况,但想知道实际行为是否类似于 #2。

谢谢!

【问题讨论】:

    标签: nginx download proxypass


    【解决方案1】:

    一个老问题,但我有相同的情况并找到了不同的解决方案。 如果您使用的是 Google Cloud Storage 或 AWS S3,您可以通过负载均衡器使用签名 URL 下载文件,该负载均衡器作为后端服务连接到存储桶。

    Using singed URL

    文件名可以是静态的 - using file metadata

    或动态 - using dynamic file name

    【讨论】:

      【解决方案2】:

      它通过 my_domain,客户端使用 my_domain 就像一个“隧道”。

      【讨论】:

      • 谢谢。那么我应该使用什么来代替“proxy_pass”来将给定的请求完全重定向到第 3 方域?
      • 您必须使用http://3rd_party_domain/a.mp4 在您的html 页面中包含视频源。在这种情况下,浏览器将直接连接到 3rd_party。
      • 没有办法通过 nginx 做到这一点?基本上,我想隐藏 3rd_party_domain url,所以有点犹豫在 html 页面中嵌入 3rd-party-domain url。我在想的是:客户端----> my_domain --(redirect)--> 3rd_party_domain ----(最终)--> 客户端。
      • 您只能使用 proxypass 隐藏 3rd_pary。嵌入、重定向等其他所有方法都会显示原始来源。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-16
      • 1970-01-01
      相关资源
      最近更新 更多