Как nginx обрабатывает TCP/UDP-сессии
Обработка клиентской TCP/UDP-сессии происходит последовательными фазами:
-
Post-accept
- Первая фаза после принятия клиентского соединения. В этой фазе выполняется модуль ngx_stream_realip_module.
-
Pre-access
- Предварительная проверка доступа. В этой фазе выполняются модули ngx_stream_limit_conn_module и ngx_stream_set_module.
-
Access
- Ограничение доступа для клиента перед обработкой данных. В этой фазе выполняется модуль ngx_stream_access_module, при использовании njs выполняется директива js_access.
-
SSL
- Терминирование TLS/SSL. В этой фазе выполняется модуль ngx_stream_ssl_module.
-
Preread
- Чтение первых байт данных в буфер предварительного чтения для анализа, например модулем ngx_stream_ssl_preread_module, перед их обработкой. При использовании njs в этой фазе выполняется директива js_preread.
-
Content
- Обязательная фаза, в которой происходит обработка данных, как правило проксирование на группу серверов или отправка клиенту заданного значения. При использовании njs в этой фазе выполняется директива js_filter.
-
Log
- Заключительная фаза, в которой записывается результат обработки клиентской сессии. В этой фазе выполняется модуль ngx_stream_log_module.