SSF0SSF0
首页
前端
  • Node
  • Go
  • C#
  • MySql
  • Bash
  • Git
  • Docker
  • VuePress
  • CI/CD
  • 服务器
  • 网站
  • 学习资料
  • 软件
Timeline
Github
标签
分类
首页
前端
  • Node
  • Go
  • C#
  • MySql
  • Bash
  • Git
  • Docker
  • VuePress
  • CI/CD
  • 服务器
  • 网站
  • 学习资料
  • 软件
Timeline
Github
标签
分类
  • Bash

    • Bash 获取路径在不同类型电脑的区别
  • Git

    • Git 使用 ssh 与 https 的区别
    • Git 回滚、重置与变基
    • 文件名大小写发生变化的坑
    • Git 提交信息规范解读与实践指南
    • Git 历史邮箱统一 + 推送 GitHub 后的远程分支处理指南
  • Docker

    • Docker 命令大全
    • nginx 镜像部署静态文件
    • Docker 运行命令说明
    • 使用 node 镜像运行本地项目
    • 挂载和卷的区别
    • Docker 打包多平台镜像
    • Docker 使用 mysql
    • Docker 容器网络访问问题总结
  • VuePress

    • 使用 VuePress 搭建个人博客概括
  • CI/CD

    • blog 使用 Github-Actions 部署 docker 服务器
  • 服务器

    • 腾讯云使用 ssh 连接服务器(Linux 实例)
    • ssl 证书安装到 docker 服务器
    • 操作系统与架构
    • ssh 连接时长问题
  • 掌握 hosts 文件:本地开发、域名重定向与回调处理完全指南
  • Cloudflare DNS与代理:完全指南

Cloudflare DNS 与代理:完全指南

DNS 基础知识

DNS(域名系统)是互联网的电话簿,将域名转换为 IP 地址。常见记录类型包括 A 记录(IPv4)、AAAA 记录(IPv6)、CNAME 记录(别名)、MX 记录(邮件)等。DNS 解析流程通常是本地缓存 → 根服务器 → 顶级域名服务器 → 权威服务器。

Cloudflare DNS 记录类型解析

Cloudflare 提供多种 DNS 记录类型,每种有特定用途:

  • A 记录:将域名指向 IPv4 地址

  • AAAA 记录:将域名指向 IPv6 地址

  • CNAME 记录:创建域名别名,指向另一个域名

  • MX 记录:指定邮件服务器

  • TXT 记录:存储文本信息,用于验证和 SPF 等

  • NS 记录:指定 DNS 服务器

  • SRV 记录:指定特定服务的服务器

  • CAA 记录:指定证书颁发机构

CNAME 记录的特点与限制

CNAME 记录创建域名别名,指向目标域名,但有多种限制:

  1. 技术限制:

    • 根域名(@)不能设置 CNAME

    • 设置 CNAME 后不能同时设置其他记录

  2. 法律和权限限制:

    • 未经授权使用他人域名可能违反版权

    • 许多网站通过 CSP 阻止被第三方嵌入

    • 目标网站可能拒绝非官方来源请求

CNAME 本身不是代理功能,只是域名指向。

Cloudflare 代理模式解析

Cloudflare 提供两种模式,通过云朵图标区分:

代理模式(橙色云)

  • 访问流程:访问者 →Cloudflare→ 源服务器

  • 隐藏源 IP,保护服务器

  • 提供 DDoS 防护、WAF、bot 防护

  • CDN 加速与全球分发

  • 自动 HTTPS 与 SSL 证书

  • 缓存功能减轻服务器负担

  • 流量分析与性能优化

DNS 模式(灰色云)

  • 直接连接:访问者 → 源服务器

  • 服务器 IP 对外可见

  • 无安全防护

  • 无 CDN 加速

  • 仅提供 DNS 解析

HTTPS 与 Cloudflare 代理关系

如果源服务器没有配置 SSL 证书:

  • 开启代理:可使用 HTTPS,Cloudflare 提供证书

  • 不开启代理:无法使用 HTTPS

Cloudflare 代理创建两段加密连接:访问者 →Cloudflare 和 Cloudflare→ 源服务器,即使源服务器不支持 HTTPS,访问者仍能通过 HTTPS 访问。

正向代理 vs 反向代理

这两种代理机制完全不同:

Cloudflare 代理(反向代理)

  • 面向网站所有者

  • 在服务端工作

  • 对访问者透明

  • 修改请求的目标服务器

  • 工作流程:用户 →Cloudflare→ 源服务器

Clash 类代理(正向代理)

  • 面向个人用户

  • 在客户端工作

  • 需用户配置

  • 修改请求的源 IP 地址

  • 工作流程:用户 →Clash 代理 → 目标网站

地理位置限制的影响

地理位置限制在使用代理时变得复杂:

  1. Cloudflare 代理:

    • 源服务器 IP 限制失效

    • 需在 Cloudflare 面板设置国家限制

  2. 用户使用 Clash:

    • 会显示代理节点的地理位置

    • 可能绕过地理限制

  3. 同时使用两者:

    访问路径:本地设备 →Clash→Cloudflare→ 源服务器

获取真实 IP 地址

开启 Cloudflare 代理后,源服务器收到的是 Cloudflare 的 IP,获取真实 IP 方法:

  1. 使用 Cloudflare 专用请求头:

    • CF-Connecting-IP(最可靠)
    • X-Forwarded-For(IP 链)
  2. 示例代码:

const realIP =
  req.headers["cf-connecting-ip"] ||
  req.headers["x-forwarded-for"]?.split(",")[0] ||
  req.ip;
  1. 验证请求确实来自 Cloudflare,确保安全性

总结

Cloudflare DNS 和代理服务为网站提供安全、性能和便捷性。选择合适的记录类型和代理模式取决于具体需求。开启代理可获得 HTTPS、CDN 和安全保护等好处,但需要正确处理真实 IP 问题。理解正向代理和反向代理的区别有助于解决地理位置限制和访问控制问题。

最后更新时间:
贡献者: 何风顺
上一页
掌握 hosts 文件:本地开发、域名重定向与回调处理完全指南