跳转到内容
搜索文档

Origin Rules 常见问题

最后更新 查看 MarkdownAgent 设置

以下是关于 Origin Rules 最常见问题的解答。

如果我同时使用 origin rule 和 page rule 执行 Host 标头/DNS 记录覆盖,会发生什么?

在此情况下,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 标头。

Cloudflare 会自动将我的带有 Host 标头和 DNS 记录覆盖的 Page Rules 迁移到 origin rules 吗?

会。请参阅 Page Rules 迁移指南,了解迁移过程的任何更新。

如果有多条 origin rule 匹配当前请求,会发生什么?

如果两条或更多 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 目标端口。

这篇文档对您有帮助吗?