首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Nginx负载均衡器-重定向而不是传递

问Nginx负载均衡器-重定向而不是传递
EN

Stack Overflow用户
提问于 2014-12-23 19:26:39
回答 1查看 688关注 0票数 1

我有多个CDN服务器,它们承载一个主站点的大文件。然而,这些内容服务器没有足够的空间来容纳所有内容,因此它们只保留部分内容。我前面有Nginx作为负载均衡器,但我想直接将重定向到文件,而不是使用proxy_pass并通过负载均衡器对其进行流处理。

我现在拥有的是:

代码语言:javascript
复制
upstream cdn {
    server content01.example.com;
    server content02.example.com;
    server content03.example.com;
}

location /files {
    proxy_pass          http://cdn;
    proxy_set_header    Host        $host;
    proxy_set_header    X-Real_IP   $remote_addr;
    proxy_next_upstream http_404;
}

当响应是http_200时,如何使它发送一个位置头,例如content01.example.com,并在出现http_404的情况下尝试下一个服务器?

我知道这可能有点奇怪,但是后端没有关于这些文件存在位置的信息,也没有足够的时间添加这些信息。

EN

回答 1

Stack Overflow用户

发布于 2014-12-24 23:22:18

一种方法是使用nginx模块的ngx.location.capture特性向每个上游服务器发送子请求,直到返回200。然后重写URL并发出带有该服务器地址的ngx.redirect。

我会考虑用nginx.conf之外的脚本来完成这个任务。另外,如果上游的响应具有一定的时间稳定性,我将使用memcache来缓存适当的响应,这样最终用户就必须等待经过一定数量的上游查询才能得到每一次响应。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27626742

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档