页面规则 - 代理
概述
在 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 代码来动态选择上游服务器,这在本例中未使用(为空字符串)。