Nginx 负载均衡器中的自定义路由

Nginx 负载均衡器中的自定义路由,nginx,load-balancing,Nginx,Load Balancing,是否可以在NGINX或其他负载平衡器中定义自定义路由? 也就是说,我有一个cookie或一个标头,并根据其值决定选择哪个后端服务器? 我需要一些非常简单的逻辑-值a1、a2、a3到服务器A,值b1、b2到服务器B,所有其他到服务器C location / { if ($http_cookie ~* "yourcookiename=a") { proxy_pass http://upstream_a; break; } if ($http_

是否可以在NGINX或其他负载平衡器中定义自定义路由? 也就是说,我有一个cookie或一个标头,并根据其值决定选择哪个后端服务器?
我需要一些非常简单的逻辑-值a1、a2、a3到服务器A,值b1、b2到服务器B,所有其他到服务器C

location / {
    if ($http_cookie  ~* "yourcookiename=a") {
        proxy_pass http://upstream_a;
        break;
    }
    if ($http_cookie ~* "yourcookiename=b") {
        proxy_pass http://upstream_b;
        break;
    }
    proxy_pass http://upstream_c;
}
这是一个简单的regexp,所以如果“yourcookiename”的值为a1、a2等,那么它将转到上游_a,依此类推。
希望它能帮助您……

如果您需要一些粘性会话,有一些开源的第三方模块可以通过nginx实现,而本机实现是商业订阅的一部分。此外,阿里巴巴开发的nginx的开源中国分支tengine可以在本地实现这一点

如果要以自定义方式执行,请使用映射来处理所有请求。这对可读性也有好处。例如,使用cookie:

map $cookie_mycookie $node {
    "~^a[1-3]$" "A";
    "~^b[1-2]$" "B";
    default     "C";
}

server {

    location / {
        proxy_pass http://$node;
    }

}

我不需要棘手的会议。客户端将设置一个cookie(比如说客户id),我希望将任何客户重定向到特定的服务器@你真的读过我的答案吗?!我说的是第一句话中的棘手问题,我猜你在那之后就停止阅读了。@PavelBernshtam没问题:)