本页列出应将 DNS 记录设为 代理 或仅 DNS 的常见场景,并说明根据配置需要注意的方面。有关代理状态如何工作的背景,请参阅代理状态。
你应代理所有服务于 HTTP 或 HTTPS Web 流量的 A、AAAA 与 CNAME 记录。这包括用于以下用途的记录:
- 你的网站或 Web 应用程序(例如
example.com、www.example.com) - 提供 Web 内容的子域(例如
blog.example.com、app.example.com) - 接受 HTTP/HTTPS 请求且不需要源站 IP 验证的 API 端点
代理记录可受益于 DDoS 防护 ↗、缓存、WAF 以及其他 Cloudflare 安全与性能功能。
当流量通过 Cloudflare 代理时,适用以下行为。你可能需要根据用例调整源站配置。
你的源站服务器会将来自 Cloudflare 的 IP 地址视为所有请求的来源,而不是最终用户的 IP 地址。依赖源 IP 进行身份验证、速率限制或地理位置的应用程序,在没有额外配置时将无法按预期运行。
Cloudflare 会在 CF-Connecting-IP 与 X-Forwarded-For 请求头中包含原始访问者 IP 地址。请将源站服务器配置为从这些标头读取访问者 IP。更多信息请参阅还原原始访问者 IP。
当记录被代理时,TLS 在 Cloudflare 全球网络处终止。Cloudflare 会与你的源站服务器建立单独的 TLS 连接。这意味着源站在 TLS 握手期间永远不会收到最终用户的客户端证书。你可以通过以下方式实现 mTLS:
- 客户端证书(mTLS):在最终用户与 Cloudflare 之间验证客户端证书。
- Authenticated Origin Pulls:验证到达源站的流量来自 Cloudflare。
- 转发客户端证书:通过 HTTP 标头将客户端证书详情转发给源站。
Cloudflare 在代理流量时会添加和修改 HTTP 请求标头,包括用于访问者 IP 识别、诊断与连接管理的标头。期望固定数量标头或按位置而非按名称解析标头的应用程序可能会遇到错误。
有关 Cloudflare 添加或修改的标头的完整列表,请参阅 HTTP 请求标头。
以下记录应设置为仅 DNS,因为它们所支持的服务与 Cloudflare 的 HTTP 代理不兼容。代理这些记录会导致相关服务中断。
MX 记录无法代理。若 A 或 AAAA 记录专门用于电子邮件(例如 mail.example.com),也应设置为仅 DNS。
Cloudflare 默认不代理端口 25 上的 SMTP 流量。代理处理电子邮件流量的记录会使邮件服务器连接到 Cloudflare 的 IP 地址,而不是你的邮件服务器。这会阻止电子邮件投递。
请为电子邮件使用与代理的 Web 流量主机名分开的专用主机名。若你的 MX 记录指向与网站相同的主机名,Cloudflare 会在 MX 记录的响应中动态前置 _dc-mx。这可确保邮件或服务流量绕过 Cloudflare 代理并直接到达你的服务器。
第三方服务通常需要 CNAME 或 TXT 记录来验证域名所有权。代理验证用 CNAME 记录会返回 Cloudflare IP 地址,而不是预期的验证目标。第三方服务无法匹配响应,验证将失败。
需要仅 DNS 验证记录的常见服务:
- Google Workspace
- AWS Certificate Manager(
acm-validations.aws) - Squarespace(
verify.squarespace.com) - Amazon Amplify
在验证完成之前,将域名验证记录设置为 DNS Only。部分服务要求该记录永久保持仅 DNS。
若你的站点托管在 SaaS 平台上(例如 Wix、Squarespace、Webflow),该平台会从其自身的基础设施提供你的站点。代理指向 SaaS 平台的 DNS 记录会导致以下一个或多个问题:
- SSL 错误:Cloudflare 与 SaaS 平台都尝试终止 SSL,从而导致证书不匹配或握手失败。
- 重定向循环:双方服务都尝试将 HTTP 重定向到 HTTPS,从而造成无限循环。
- 页面或资源损坏:平台拒绝并非来自预期 DNS 解析的请求。
若你的 SaaS 平台未明确支持 Cloudflare 代理,请将该记录设置为 DNS-only。有关特定平台的指导,请参阅特定供应商的 DNS 记录。
用于 FTP、SSH、RDP、游戏服务器或其他非 HTTP 协议的记录必须为仅 DNS。Cloudflare 代理仅处理 HTTP 与 HTTPS 流量。代理这些记录会将流量路由到 Cloudflare,后者会丢弃非 HTTP 连接。
要代理非 HTTP 协议,请使用 Cloudflare Spectrum。
若 CNAME 记录指向另一个 CDN 或代理提供商(例如 AWS CloudFront、Akamai、Fastly),通过 Cloudflare 代理它可能在两个代理之间造成冲突:
- SSL 协商失败:双方代理都尝试终止 TLS,从而产生证书链错误。
- 路由循环:每个代理都将请求转发给对方。
- 连接错误:上游 CDN 拒绝来自 Cloudflare IP 地址的请求。
Cloudflare 会自动阻止代理部分已知目标。对于未自动阻止的目标,若遇到连接问题,请将该记录设置为 DNS-only。
部分第三方服务会验证传入 API 调用或 webhook 投递的源站 IP 地址。当你代理用于发送出站请求或接收 webhook 的端点的 DNS 记录时,远程服务会看到 Cloudflare 的 IP 地址,而不是你服务器的 IP 地址。这会导致验证失败。
若第三方服务需要基于 IP 的验证且不接受 Cloudflare 的 IP 范围 ↗,请将该服务的记录设置为 DNS-only。