Как 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.