zone
Директива 'zone' определяет зону разделяемой памяти для данных состояния сессий в NGINX. — NGINX HTTP Core
Описание
Директива 'zone' в первую очередь используется в контексте upstream и помогает управлять разделяемой памятью для переменных, используемых в нескольких запросах. Она создаёт зону разделяемой памяти, к которой могут обращаться разные процессы NGINX, что необходимо для хранения данных сессий или информации о соединениях. \n\nДиректива принимает один или два аргумента: имя зоны разделяемой памяти и необязательный размер. Выделенная память может хранить различные данные, связанные с сессиями, что позволяет NGINX более эффективно обрабатывать такие функции, как балансировка нагрузки и проверки состояния. Каждую zone можно настроить с определённым размером, чтобы учесть ожидаемое количество одновременно активных сессий. Если размер слишком мал, это может привести к непредвиденному поведению, например к потере или неправильной обработке сессий.\n\nПри определении zone NGINX выделяет указанное количество памяти из системы. Память зоны поддерживается между рабочими процессами, что позволяет данным сессий оставаться доступными и согласованными вне зависимости от того, какой процесс обрабатывает запрос. Поэтому директива 'zone' особенно полезна для приложений, требующих высокой доступности и низкой задержки, таких как сценарии с привязкой сессий, механизмы кэширования или другие сценарии совместного хранения состояния.
Пример конфига
upstream backend {
zone my_zone 64k;
server backend1.example.com;
server backend2.example.com;
}Убедитесь, что размер zone достаточен для потребностей вашего приложения; слишком маленький размер zone может привести к потере данных.
В каждом контексте должна быть определена только одна директива 'zone', чтобы избежать конфликтов.