proxy_half_close
Директива `proxy_half_close` контролирует, закрывает ли NGINX upstream‑соединение после закрытия клиентского соединения в конфигурациях модуля `stream`. — NGINX Stream Core
Описание
Директива `proxy_half_close` используется в контексте модуля Stream NGINX, в частности в конфигурациях `stream` и `stream server`. Когда она включена (установлена в 'on'), сервер может закрыть upstream‑соединение после того, как клиент завершил отправку данных и закрыл своё соединение. Это особенно полезно для некоторых протоколов, когда upstream‑серверу требуется продолжить обработку данных после отключения клиента, что обеспечивает эффективность использования ресурсов и корректную обработку кратковременных соединений. В отсутствие этой директивы, по умолчанию (когда установлено 'off'), NGINX сохраняет upstream‑соединение даже после закрытия клиентом. Такое поведение может приводить к неоправданному расходу ресурсов, поскольку upstream‑сервер остаётся открытым дольше, чем необходимо. Директива `proxy_half_close` может быть особенно важна в сценариях, где downstream‑соединения частые и кратковременные, либо когда необходимо эффективно управлять состояниями сокетов для оптимизации производительности. Директива принимает единственный аргумент: `on` или `off`. Установка в 'on' включает поведение half‑close, тогда как 'off' (настройка по умолчанию) означает, что NGINX не будет немедленно закрывать upstream‑соединение после отключения на стороне клиента. Эта настройка даёт гибкость в управлении жизненным циклом соединений в зависимости от конкретных потребностей вашего приложения и используемых протоколов.
Пример конфига
stream {
server {
listen 12345;
proxy_pass backend_servers;
proxy_half_close on;
}
}Обязательно тщательно протестируйте поведение соединения; включение этой функции может привести к изменениям в том, как данные передаются между клиентом и бэкенд‑серверами.
Если используется с протоколами, которые ожидают сохранения сессии, убедитесь, что полузакрытие не приводит к неожиданным разрывам соединения.