以下是关于 Origin Rules 最常见问题的解答。
在此情况下,origin rule 参数将覆盖 page rule 参数。
请考虑以下示例场景:
- page rule 定义了 Host 标头覆盖,但未定义 resolve 覆盖(或 DNS 记录覆盖)。origin rule 定义了 DNS 记录覆盖,但未定义 Host 标头覆盖。最终请求将使用 page rule 定义的
Host标头,以及 origin rule 定义的源站主机名。 - page rule 定义了 Host 标头覆盖,origin rule 也定义了 Host 标头覆盖。最终请求将使用 origin rule 定义的
Host标头。
会。请参阅 Page Rules 迁移指南,了解迁移过程的任何更新。
如果两条或更多 origin rules 匹配某请求,这些规则的配置会合并。在合并两个配置时,靠后规则的设置将覆盖先前规则中定义的设置,更新或添加配置属性。Cloudflare 最终应用的配置将是此合并版本。
例如,如果你配置了以下两条 origin rules 且两条规则都匹配,Cloudflare 将使用第一条规则设置的目标端口,以及第二条规则设置的 DNS 主机名覆盖和 Host 标头值。
Origin rule #1
| 参数 | 值 |
|---|---|
Set Host header |
example.com |
| Set destination port | 8081 |
Origin rule #2
| 参数 | 值 |
|---|---|
Set Host header |
example.net |
| Set DNS hostname | example.net |
供 API 用户参考的 JSON 示例
使用 API 时,你在 action_parameters 对象中配置 origin rule 参数。
{
"rules": [
{
"expression": "http.request.uri.query contains \"/eu/\"",
"description": "Origin rule #1",
"action": "route",
"action_parameters": {
"host_header": "example.com",
"origin": {
"port": 8081
}
}
},
{
"expression": "http.request.uri.query contains \"/eu/\"",
"description": "Origin rule #2",
"action": "route",
"action_parameters": {
"host_header": "example.net",
"origin": {
"host": "example.net"
}
}
}
]
}要应用的合并配置如下:
| 参数 | 值 |
|---|---|
Set Host header |
example.net |
| Set destination port | 8081 |
| Set DNS hostname | example.net |
如果你还在规则 #2 中配置了目标端口,该值将覆盖规则 #1 中定义的 8081 目标端口。