1

我有三台服务器。一个用于负载平衡,另外两个用于服务 Web 应用程序。如果我将我的网页用作静态站点,我的负载平衡工作正常。但是当我登录到我的网页时,它没有正确响应,因为每次加载页面时它都会更改其服务器。在注销前不更改当前服务器的情况下,我怎么能做到这一点。我的负载平衡服务器配置是

upstream web_backend{
    server 192.168.33.2;
    server 192.168.33.3;
}

server{
    listen 80;

    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://web_backend;
    }
}
4

1 回答 1

3

您可以使用nginx 的会话持久性功能:

如果需要将客户端绑定到特定的应用程序服务器——换句话说,使客户端的会话“粘性”或“持久”,总是试图选择特定的服务器——ip-hash 负载平衡机制可以是用过的。

使用 ip-hash,客户端的 IP 地址被用作散列键来确定应该为客户端的请求选择服务器组中的哪个服务器。此方法确保来自同一客户端的请求将始终定向到同一服务器,除非该服务器不可用。

要配置 ip-hash 负载平衡,只需将 ip_hash 指令添加到服务器(上游)组配置:

在您的情况下,只需添加ip_hash到您的上游定义中

upstream web_backend{
    ip_hash;
    server 192.168.33.2;
    server 192.168.33.3;
}
于 2016-03-11T23:20:51.517 回答