頁面規則 - 代理
概述
在 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 程式碼來動態選擇上游伺服器,這在本例中未使用(為空字串)。