使用相同的url路径将所有请求动态重定向到同一上游服务器

时间:2017-06-05 08:59:47

标签: http redirect nginx load-balancing

我正在尝试创建一个基本的nginx LB,如果url路径重复自身而不依赖于发件人cookie / ip,则会将请求重定向到同一个上游服务器。

例如,假设我有一个名为 A.com 的LB和一个名为 A.com/target 的目标。 第一次将请求发送到 A.com/target 时,LB会重定向到上游的随机服务器,到目前为止一直很好,问题是在具有相同url路径的第二个请求上(无论谁提出这个请求,因此cookie是不可能的)我需要LB重定向到它重定向到上次的同一台服务器。

我不能让它正常工作所以我想问一下是否有人用nginx或任何其他简单的LB来做正确的方法。

2 个答案:

答案 0 :(得分:2)

您可以借助于1.7.2版中引入的nginx上游哈希功能,通过URL进行平衡 官方文档在这里here

upstream backend {
    hash $scheme://$host$request_uri; # put any variables here

    server backend1.example.com;
    server backend2.example.com;
    server backend3.example.com;
}

答案 1 :(得分:0)

您还可以考虑在哈希行的末尾添加“ consistent”参数,以避免在上游服务器发生更改(添加或删除)的情况下进行大量重新哈希。 Haproxy也是一个选项,它的后端部分具有“哈希类型一致”参数组。