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)
- 將初始的資料位元組讀取到 preread 緩衝區,以便讓 ngx_stream_ssl_preread_module 等模組在處理資料之前進行分析。對於 njs,則在此階段調用 js_preread 指令。
-
內容 (Content)
- 實際處理資料的強制階段,通常會將資料 代理到上游伺服器,或者將指定的值返回給客戶端。對於 njs,則在此階段調用 js_filter 指令。
-
日誌 (Log)
- 記錄客戶端連線處理結果的最後階段。ngx_stream_log_module 模組在此階段被調用。