Re: Добавление заголовка после upstream
Andrey Oktyabrskiy
ano на bestmx.net
Ср Июл 29 13:39:43 UTC 2015
On 2015-07-29 12:56, Budulianin wrote:
> Может знаете какие-то книги/форумы/статьи на тему маршрутизации и
> правильных
> подходов/принципов?
> Интересно почитать.
Правильно так:
http://nginx.org/ru/docs/http/ngx_http_upstream_module.html#sticky
Но если купить коммерческую подписку по тем или иным причинам
невозможно, придётся внешним монтажом:
или ставить за nginx'ом haproxy и писать в нём нечто эдакое:
listen fe 127.0.0.1:9876
balance leastconn
appsession JSESSIONID len 52 timeout 1h
server be1 192.168.169.170:8989 check
server be2 192.168.169.171:8989 check
или самим nginx'ом сделать то же самое:
# случайный выбор бакенда
upstream rndbackend {
server 192.168.169.170;
server 192.168.169.171;
}
# выбор бакенда на основании куки backend
map $cookie_backend $sticky_backend {
default BAD_GATEWAY;
~(?<IP>[0-9.]+$) $IP;
}
server {
listen 80;
# если приехала кука, выбираем бакенд согласно её значению
location / {
proxy_pass http://$sticky_backend;
error_page 502 = @random_backend;
}
# если куки нет, выбираем бакенд случайно и выставляем куку
location @random_backend (
proxy_pass http://rndbackend;
add_header Set-Cookie "backend=$upstream_addr; path=/";
}
Подробная информация о списке рассылки nginx-ru