頁面規則 - 代理
概述
在 OpenResty Edge 的頁面規則中,proxy
部分用於配置請求代理的行為。這包括上游伺服器的選擇、負載均衡策略、超時設定等。
配置說明
proxy
配置是頁面規則中的一個可選部分。它包含以下主要欄位:
欄位名 | 型別 | 描述 |
---|---|---|
retries | integer | 重試次數,-1 表示根據上游中存在的閘道器伺服器數量進行重試 |
upstream | array | 主上游伺服器列表 |
backup_upstream | array | 備用上游伺服器列表 |
balancer | object | 負載均衡器配置 |
upstream_el_code | string | 選擇上游的 EdgeLang 程式碼 |
connect_timeout | integer | 連線超時時間(秒) |
sticky | object | 會話保持配置 |
retry_condition | array | 重試條件列表 |
send_timeout | integer | 傳送超時時間(秒) |
read_timeout | integer | 讀取超時時間(秒) |
upstream 和 backup_upstream 配置
upstream
和 backup_upstream
都是上游伺服器列表,每個伺服器配置包含:
欄位名 | 型別 | 描述 |
---|---|---|
cluster_type | string | 叢集型別,可選值:http, http_k8s, global, global_k8s |
cluster_name | string | 叢集名稱 |
http
表示 HTTP 應用內的普通上游。
http_k8s
表示 HTTP 應用內的 Kubernetes 上游。
global
表示全域性普通上游。
global_k8s
表示全域性 Kubernetes 上游。
balancer 配置
balancer
配置負載均衡策略:
欄位名 | 型別 | 描述 |
---|---|---|
algorithm | string | 負載均衡演算法,例如 “roundrobin” |
sticky 配置
sticky
用於配置會話保持,確保來自同一客戶端的請求總是傳送到同一個/一組上游伺服器:
欄位名 | 型別 | 描述 |
---|---|---|
enable | boolean | 是否啟用 Sticky Cookie |
mode | string | Sticky Cookie 的模式 |
ttl | integer | Sticky Cookie 的存活時間 |
key | string | Sticky Cookie 的名稱 |
level | string | Sticky Cookie 的級別,支援 upstream 和 server 級別 |
配置示例
proxy:
retries: -1
upstream:
- cluster_type: http
cluster_name: app_upstream_name1
- cluster_type: http
cluster_name: app_upstream_name2
backup_upstream:
- cluster_type: http_k8s
cluster_name: app_k8s_upstream_name2
balancer:
algorithm: roundrobin
upstream_el_code: ''
connect_timeout: 6
sticky:
enable: true
mode: none
ttl: 1
key: Edge-Sticky
level: upstream
retry_condition:
- error
- timeout
- invalid_header
- http_500
- http_502
- http_504
send_timeout: 6
read_timeout: 6
此配置定義了一個代理規則,使用兩個 HTTP 上游伺服器作為主要伺服器,一個 Kubernetes 上游伺服器作為備用伺服器。它使用輪詢(roundrobin)演算法進行負載均衡,啟用了會話保持,並設定了各種超時和重試條件。
注意事項
cluster_type
可以是 “http”、“http_k8s”、“global” 或 “global_k8s”,分別對應應用 HTTP 上游、應用 Kubernetes 上游、全域性 HTTP 上游和全域性 Kubernetes 上游。cluster_name
必須與之前定義的上游名稱相匹配。當
retries
設定為 -1 時,表示根據上游中存在的閘道器伺服器數量進行重試。sticky
配置允許你實現會話保持,確保來自同一客戶端的請求總是傳送到同一個上游伺服器。retry_condition
列出了觸發重試的條件,包括各種錯誤和特定的 HTTP 狀態碼。超時設定(
connect_timeout
、send_timeout
、read_timeout
)以秒為單位。upstream_el_code
允許你使用 EdgeLang 程式碼來動態選擇上游伺服器,這在本例中未使用(為空字串)。