Я установил балансировщик нагрузки с NGINX для двух веб-серверов IIS, которые работают с сеансами. Вот файл конфигурации NGINX, который я создал для балансировки нагрузки:
#Log Format
log_format upstreamlog '$server_name to: $upstream_addr [$request] '
'upstream_response_time $upstream_response_time '
'msec $msec request_time $request_time';
#Upstream
upstream mybalancer {
ip_hash;
server server1.com:80;
server server2.com:80;
}
#Server
server {
listen 80;
listen [::]:80;
server_name server3.com;
access_log /var/log/nginx/access.log upstreamlog;
location / {
proxy_pass http://mybalancer;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
Когда я обращаюсь к server3.com
он перенаправляется, например, на server1.com
. Далее делаю логин, перехожу на определенную страницу, скажем: server1.com/welcome/maps
. Все в порядке.
Сейчас я выключить server1.com
, а NGINX перенаправляет меня на server2.com
, но предлагает мне перейти на страницу входа.
Мой вопрос:
Можно настроить NGINX так, чтобы те же сессии когда один сервер выходит из строя? Это означает, что в моем примере NGINX может перенаправить меня на server2.com/welcome/maps
с той же сессией.
PD:
Я читал другие сообщения о настройке этих параметров:
proxy_cookie_path ~*^/.* /;
add_header "Set-Cookie" "lb=$upstream_http_X_Loadbalance_ID";
но не работает.