要確保請求在一次會話中被轉發到相同的後端伺服器上,可以使用 Nginx 的 ip_hash 或 sticky 模組來實現

滴滴滴發表於2024-03-10

要確保請求在一次會話中被轉發到相同的後端伺服器上,可以使用 Nginx 的 ip_hashsticky 模組來實現。

  1. ip_hash 模組:
    • ip_hash 模組使用客戶端 IP 地址作為雜湊鍵,將同一 IP 地址的請求始終轉發到相同的後端伺服器。
    • 要啟用 ip_hash 模組,只需在 Nginx 配置檔案的 http 塊或 upstream 塊中新增 ip_hash 指令即可。
nginx複製程式碼
http {
    upstream backend {
        ip_hash;
        server backend1.example.com;
        server backend2.example.com;
    }

    server {
        ...
        location / {
            proxy_pass http://backend;
        }
    }
}
  1. sticky 模組:
    • 如果使用第三方模組 ngx_http_upstream_sticky_module(也稱為 ngx_http_upstream_cookie_module),則可以透過設定特定的會話識別符號來實現會話粘滯。
    • 需要在 Nginx 配置檔案的 http 塊中新增 sticky 指令並設定會話識別符號的名稱和過期時間。
nginx複製程式碼
http {
    upstream backend {
        sticky cookie srv_id expires=1h domain=.example.com path=/;
        server backend1.example.com;
        server backend2.example.com;
    }

    server {
        ...
        location / {
            proxy_pass http://backend;
        }
    }
}

相關文章