sticky
Директива 'sticky' позволяет сохранять сессии, устанавливая cookie для маршрутизации запросов клиента на тот же бэкенд-сервер.
Описание
Директива 'sticky' в NGINX sticky cookie module предназначена для обеспечения постоянства сессии с помощью cookie, которые определяют, какой upstream сервер должен обрабатывать запросы от конкретного клиента. Когда клиент отправляет запрос, модуль проверяет наличие определённого cookie, указывающего на выбранный upstream сервер. Если cookie присутствует, NGINX направляет запрос на сервер, связанный с этим cookie, гарантируя, что клиент остаётся подключён к тому же серверу — это особенно полезно для приложений, где данные сессии должны сохраняться между запросами.
С 'sticky' можно использовать несколько параметров для настройки поведения. Например, можно задать алгоритм хеширования (например, 'md5' или 'sha1') для генерации sticky cookie, чтобы обеспечить равномерное распределение запросов между upstream серверами. Кроме того, можно указать флаги, такие как 'no_fallback', которые изменяют поведение, когда cookie не удаётся сопоставить с upstream сервером — вместо попытки выполнить round-robin по другим серверам будет возвращён ответ 502 Bad Gateway. Директива также поддерживает атрибуты cookie, такие как 'domain', 'path', 'expires', 'secure' и 'httponly', что позволяет тонко управлять тем, как обрабатываются cookie.
Пример конфига
upstream my_app {
sticky;
server 127.0.0.1:9000;
server 127.0.0.1:9001;
server 127.0.0.1:9002;
}В клиенте должны быть включены файлы cookie, чтобы механизм sticky работал правильно; в противном случае будет задействован резервный механизм.
Убедитесь, что настроенный список серверов остается неизменным, особенно при использовании режима хеширования 'index', поскольку порядок серверов может меняться между перезагрузками.
Неправильная конфигурация атрибутов cookie (например, domain или path) может привести к тому, что файлы cookie не будут отправляться в последующих запросах. Обратите внимание на эти параметры.