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

Dynamically redirect all requests with the same url path to the same upstream server

我正在尝试创建一个基本的 nginx LB,如果 url 路径在不依赖发件人 cookies/ip.

的情况下重复自身,它将请求重定向到同一上游服务器

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

我只是无法让它正常工作所以我想问问是否有人有正确的方法来使用 nginx 或任何其他简单的 LB。

你可以在1.7.2版本引入的nginx upstream hash特性的帮助下通过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;
}

您还可以考虑在哈希行末尾添加“一致”参数,以避免在上游服务器更改(添加或删除)时进行大量重新哈希。 Haproxy 也是一个选项,其后端部分的“hash-type 一致”参数组。