通过自定义源站服务器,您可以将流量从一个或多个自定义主机名发送到默认代理回退以外的其他位置,例如:
soap.stores.com指向origin1.comtowel.stores.com指向origin2.com
要使用自定义源站服务器,你需要满足以下要求:
- 每个自定义源站都必须是有效主机名,并在你账户的 DNS 中具有已代理(橙色云)的 A、AAAA 或 CNAME 记录。不能使用 IP 地址。
- 自定义源站服务器的 DNS 记录目前不支持通配符值。
要使用自定义源站,请在仪表板中创建新的自定义主机名 时选择该选项,或在使用 API POST 命令 时包含 "custom_origin_server": your_custom_origin_server 参数。
将云提供商端点用作自定义源站时(例如 Azure App Service、AWS ALB 或 GCP Cloud Run),若 Host 请求头与该端点上配置的域名不匹配,提供商可能会以 404 或 400 错误拒绝请求。
默认情况下,Cloudflare 会将原始自定义主机名作为 Host 请求头发送。若你的云提供商期望不同的主机名:
- 将云提供商配置为接受自定义主机名作为有效域名,或
- 使用 Origin Rule 覆盖
Host请求头,以匹配云提供商期望的主机名。
当 Cloudflare 与你的默认源站服务器建立连接时,Host 请求头与 SNI 都将是原始自定义主机名的值。
但是,若你将该自定义主机名配置为使用自定义源站,SNI 的值将是自定义源站的值,而 Host 请求头将是原始自定义主机名。由于这些值不匹配,你将无法在源站上使用 Full (strict)。
要解决此问题,你可以联系客户团队申请 SNI rewrites(SNI 重写) 授权。
使用 SNI 重写选择自定义主机名如何填充 SNI 值:
-
Origin server name(源站服务器名称,默认):将 SNI 设为自定义源站
- 若自定义源站为
custom-origin.example.com,则 SNI 为custom-origin.example.com。
- 若自定义源站为
-
Host header(主机标头):将 SNI 设为 host header(或 host header 覆盖)
- 若未启用通配符且主机名为
example.com,则 SNI 为example.com。 - 若启用了通配符,主机名为
example.com,且请求到达www.example.com,则 SNI 为www.example.com。
- 若未启用通配符且主机名为
-
Subdomain of zone(区域子域名):选择将什么设为 SNI 值(自定义主机名或任何子域名)
- 若未启用通配符且请求到达
example.com,可选择将 SNI 设为example.com或www.example.com。 - 若启用了通配符,你将 SNI 设为
example.com,且请求到达www.example.com,则 SNI 为example.com。
- 若未启用通配符且请求到达
要在仪表板中设置 SNI rewrite,请在创建自定义主机名 时从 Origin SNI value 中选择你偏好的选项。
要通过 API 设置 SNI rewrite,请在创建自定义主机名 时设置 custom_origin_sni 参数:
- Custom origin name(默认):若未设置该参数则适用
- Host header(主机标头):指定
":request_host_header:" - Subdomain of zone(区域子域名):设为
"example.com"或自定义主机名的其他子域名