Session Persistence
Содержание |
Обзор
Модуль "Session Persistence" позволяет пересылать запросы одной и той же сессии на один и тот же сервер. Он работает совместно с модулем балансировки нагрузки. При получении нового запроса модуль балансировки нагрузки пересылает его на сервер А и устанавливает сессию. После получения следующего запроса этой сессии модуль перенаправит его напрямую на сервер А.
Модуль предоставляет способы маркировки сессий:
- Добавление сессионных cookie;
- Мониторинг существующих сессионных cookie в HTTP запросах;
- Механизм сессий.
Директивы
persistence
Синтаксис | persistence mode [cookie_name=name] [monitor_cookie=name] [timeout=timeout]; |
Контекст | upstream |
Включает сохранение сессии. Поддерживается два persistence mode: insert_cookie (добавление cookie) и session_based. Добавление cookie имеет два подрежима: непосредственная вставка cookie и добавление cookie на основе мониторинга существующих cookie. Таймаут указывается в минутах.
Пример:
Добавить cookie:
upstream pool1 { persistence insert_cookie cookie_name=senginxforward timeout=30; server 192.168.1.101; server 192.168.1.102; }
Слушать существующие сессионные cookie:
upstream pool2 { least_conn; persistence insert_cookie cookie_name=senginxforward monitor_cookie=JSESSIONID timeout=30; server 192.168.1.101; server 192.168.1.102; }
Механизм сессий (Начиная с версии 1.5.7):
upstream pool2 { least_conn; persistence session_based; server 192.168.1.101; server 192.168.1.102; } server { session on; ... ... proxy_pass http://pool2; }
Реализация
Добавление cookie
При получении нового запроса модуль вставит в ответ заголовок "Set-Cookie", который заставит клиентский браузер установить cookie, содержащий информацию о сервере. Этот cookie будет содержаться в следующем запросе, отправленном клиентским браузером, и модуль перешлет запрос на предыдущий сервер ответа в соответствии с этим cookie.
Мониторинг сессионных cookie
Если сервер уже установил cookie для идентификации сессии, модуль будет отслеживать cookie для обеспечения функциональности сохранения сессии.
Механизм сессий
SEnginx открывает и поддерживает сессию.