Origin Rules 允许你更改 Cloudflare 将请求发送到的源站服务器,或修改请求到达该服务器的方式。当你需要将特定请求路由到不同后端(例如第三方服务或非标准端口上的服务器)时,此功能非常有用。你可以执行以下覆盖:
- Host 标头:覆盖传入请求的
Host标头。 - Server Name Indication (SNI):覆盖传入请求的 Server Name Indication (SNI) 值。
- DNS 记录:覆盖传入请求解析后的主机名,将请求发送到不同的源站服务器。
- 目标端口:覆盖传入请求解析后的目标端口。
每条源站规则都包含一个筛选表达式,用于定义覆盖适用于哪些请求(例如,按主机名、路径或其他请求属性进行匹配)。
对于更复杂的 and customized modifications,请考虑使用 Snippets。
Cloudflare 为常见用例提供规则模板。
-
在 Cloudflare 仪表板中,转到 Rules 概览页面。
Go to Overview ↗ -
选择 Templates(模板),然后选择一个可用模板。
你也可以参阅开发者文档中的 Examples gallery。
| Free | Pro | Business | Enterprise | |
|---|---|---|---|---|
Availability | Yes | Yes | Yes | Yes |
Number of rules | 10 | 25 | 50 | 300 |
Override Host header | No | No | No | Yes |
Override SNI | No | No | No | Yes |
Override DNS records | No | No | No | Yes |
Override destination port | Yes | Yes | Yes | Yes |
Rules 功能的执行顺序如下:
- Single Redirects(单一重定向)
- URL Rewrite Rules(URL 重写规则)
- Configuration Rules(配置规则)
- Origin Rules(源站规则)
- Bulk Redirects(批量重定向)
- Managed Transforms(托管转换)
- Request Header Transform Rules(请求标头转换规则)
- Cache Rules(缓存规则)
- Snippets(代码片段)
- Cloud Connector(Cloud Connector)
上述不同类型的规则优先于 Page Rules(页面规则)。这意味着当 Page Rules 与上述 Rules 产品同时匹配时,Page Rules 会被覆盖。
一般来说,对于非终止动作,同一阶段中规则所做的最后一次更改将生效(后续规则可以覆盖之前规则所做的更改)。但对于终止动作(Block、Redirect 或任一质询动作),规则评估将停止,并立即执行该动作。
例如,如果多个带有 Redirect 动作的规则匹配,Cloudflare 将始终使用第一条匹配规则的 URL 重定向。此外,如果您使用不同的 Cloudflare 产品(单次重定向和批量重定向)配置 URL 重定向,在规则匹配的情况下,最先执行的产品将生效(此处为单次重定向)。
有关产品执行顺序,请参阅阶段列表。
如果你使用源站规则覆盖主机名(通过 Host 标头覆盖或 DNS 记录覆盖),并在负载均衡器配置中添加标头覆盖,则源站规则优先于负载均衡器配置。
与 Page Rules 类似,执行 Host 标头覆盖的源站规则会将原始请求的 SNI 值更新为与 Host 标头相同的值。若要将 SNI 值设置为与 Host 标头覆盖不同的值,请在同一条源站规则中添加 SNI 覆盖,或为此单独创建一条源站规则。
排查 origin rules 时,使用 Cloudflare Trace 判断某条规则是否对特定 URL 生效。