要確保請求在一次會話中被轉發到相同的後端伺服器上,可以使用 Nginx 的 ip_hash
或 sticky
模組來實現。
- 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;
}
}
}
- sticky 模組:
- 如果使用第三方模組 ngx_http_upstream_sticky_module(也稱為
ngx_http_upstream_cookie_module
),則可以透過設定特定的會話識別符號來實現會話粘滯。 - 需要在 Nginx 配置檔案的
http
塊中新增sticky
指令並設定會話識別符號的名稱和過期時間。
- 如果使用第三方模組 ngx_http_upstream_sticky_module(也稱為
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;
}
}
}