使用nginx对动态php网站进行负载平衡


Load balancing dynamic php site using nginx

我有三台服务器。一个用于负载平衡,另外两个用于为 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;
    }
}

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

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

使用 ip 哈希,客户端的 IP 地址用作哈希密钥 确定应为服务器组中的哪个服务器选择 客户的要求。此方法可确保来自同一请求的请求 客户端将始终定向到同一服务器,除非 服务器不可用。

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

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

upstream web_backend{
    ip_hash;
    server 192.168.33.2;
    server 192.168.33.3;
}