TCP 應用

OpenResty Edge 支援作為 TCP 代理服務,可以在四層 TCP 上做流量的轉發,以及相關的配置。 預設 Edge 並沒有開放 TCP 代理的埠,需要在全域性配置中,開啟需要的 TCP 代理埠。 我們進入 閘道器叢集 => 閘道器分割槽 頁面,可以看到所有的分割槽,以及其開放的不同型別的埠。

OpenResty Edge 支援作為 TCP 代理服務,可以在四層 TCP 上做流量的轉發,以及相關的配置。

預設 Edge 並沒有開放 TCP 代理的埠,需要在全域性配置中,開啟需要的 TCP 代理埠。 我們進入 閘道器叢集 => 閘道器分割槽 頁面,可以看到所有的分割槽,以及其開放的不同型別的埠。

我們點選「新增埠」,輸入我們希望增加的埠,埠型別選擇 tcp

點選儲存,我們就可以在當前列表看到這個埠。 此時該分割槽對應的閘道器節點,將會在 TCP 層監聽這個埠。

我們現在進入 應用 => Stream,這可以看已經建立好的 Stream 型別的應用。

點選新建應用,型別選擇 TCP,輸入剛才新增的埠(也可以加更多的埠),點選儲存,一個 TCP 代理應用就建立好了。

建立好應用之後,最主要的工作是配置代理轉發規則。 我們需要先建立好上游,在上游頁面,我們可以看到新增上游的按鈕。

點選它新增上游,輸入上游名稱,以及上游節點的地址和埠資訊。

點選儲存,上游就建立好了。

接下來,進入預處理階段,點選新建規則,我們需要建立一條轉發規則。

我們開啟代理,選擇代理到新建的上游。

點選儲存,新的轉發規則就建立好了。 接下來,我們需要釋出剛才的這些配置變更。 進入釋出頁面,我們可以看到還未釋出的配置變更。

點擊發布按鈕,可以選擇輸入一些備註資訊,然後再點擊發布,很快這些配置就同步到對應分割槽的閘道器節點了,一個 TCP 代理服務就已經在運行了。

上游 PROXY 協議

上游 PROXY 協議 v2 和版本選擇功能在 OpenResty Edge 26.12.1-1 中首次引入。

閘道器可以向後端傳送 PROXY 協議頭,以保留客戶端連線資訊。後端必須支援所選的協議版本。 此設定與閘道器監聽埠接收 PROXY 協議的開關相互獨立。

TCP、UDP、TLS 透傳及 SSL/TLS 解除安裝應用均可通過應用配置 API 選擇上游協議版本。 它們在 API 中對應的應用型別分別為 tcpudptlsssl。 UDP 上游應使用 v2,且後端必須能夠解析包含 UDP 傳輸標識的 PROXY 協議 v2 報文。

PUT /admin-api/applications/{type}/{id}/config
Content-Type: application/json

{"enable_proxy_protocol": true, "proxy_protocol_version": 2}
  • enable_proxy_protocol 控制是否向上遊傳送協議頭。
  • proxy_protocol_version 接受數字 12,預設為 1。 關閉 PROXY 協議會保留所選版本,供下次啟用時使用。
  • proxy_protocol_version 設定為 JSON null 會清除已儲存的值。 後續 GET /admin-api/applications/{type}/{id}/config 響應會省略該欄位, 釋出時缺失的版本按 1 處理。

修改配置後需要釋出應用。現有應用以及未指定版本的已釋出配置繼續使用 v1。 控制台目前提供啟用或關閉開關,版本選擇通過 API 完成。 自定義 EdgeLang 規則請參閱 enable-proxy-protocol

版本要求

使用此功能需要 OpenResty Edge 26.12.1-1 或更新版本。 釋出 v2 應用配置前,請確保所有承載該應用的閘道器均已升級到支援該功能的版本。 舊版本閘道器可能忽略版本設定並繼續傳送 v1,且不會報錯。

訪問日誌轉義

TCP 應用使用 全域性配置 > 通用 > 日誌 中的 Stream 訪問日誌格式。 Escape 支援 nonedefaultjson,預設值為 none。日誌值嵌入 JSON 時 使用 json;使用 default 可採用 Stream 日誌模組的標準轉義。