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