|
Опубликован выпуск основной ветки nginx 1.29.6, в которой продолжается развитие новых возможностей. В параллельно поддерживаемую стабильную ветку 1.28.x вносятся только изменения, связанные с устранением серьёзных ошибок и уязвимостей. В дальнейшем на базе основной ветки 1.29.x будет сформирована стабильная ветка 1.30. Код проекта написан на языке Си и распространяется под лицензией BSD.
В новом выпуске добавлена возможность привязки сеансов клиентов к одним и тем же серверам в группе. Доступно три метода: "cookie" - передача данных о выбранном сервере через указанную Cookie; "route" - проксируемый сервер назначает клиенту маршрут при получении первого запроса; "learn" - nginx анализирует ответы от upstream-сервера и запоминает начатые сервером сеансы. Для настройки привязки в блок "upstream" модуля "http" добавлена директива "sticky", а в директиву "server" добавлены параметры "route" и "drain".
# Через Cookie srv_id выставляется сервер "a" или "b".
upstream backend {
server backend1.example.com route=a;
server backend2.example.com route=b;
sticky cookie srv_id expires=1h domain=.example.com path=/;
}
# Маршрут берётся из Cookie "JSESSIONID" или если она не выставлена из параметра jsessionid в URI.
map $cookie_jsessionid $route_cookie {
~.+\.(?P\w+)$ $route;
}
map $request_uri $route_uri {
~jsessionid=.+\.(?P\w+)$ $route;
}
upstream backend {
server backend1.example.com route=a;
server backend2.example.com route=b;
sticky route $route_cookie $route_uri;
}
# upstream-сервер создаёт сеанс, выставив при первом ответе Cookie "EXAMPLECOOKIE".
# Остальные запросы с данной Cookie направляются к одному серверу.
upstream backend {
server backend1.example.com:8080;
server backend2.example.com:8081;
sticky learn
create=$upstream_cookie_examplecookie
lookup=$cookie_examplecookie
zone=client_sessions:1m;
}
|