Skip to content

使用ZoneABC 子域名接入 Cloudflare SaaS

约 1120 字大约 4 分钟

cloudflarezoneabc域名

2025-06-10

本文介绍了如何利用 ZoneABC 提供的免费子域名服务来接入 Cloudflare SaaS,从而将你未托管在 Cloudflare 的域名也纳入其强大的 CDN 和安全保护之下。

前言

ZoneABC 是一个由一群技术爱好者、专业工程师和项目经理组成的非营利性组织。其使命是通过提供免费、可靠的子域名服务,并由 Cloudflare 提供企业级保护,来降低开发者、学生、教育工作者和开源社区的入门门槛。ZoneABC 坚信,稳定、安全的互联网基础设施不应仅是大型企业的特权,而是应该让所有用户都能专注于创新,而无需担忧基础设施问题。

目前ZoneABC 开启了 Cloudflare SaaS ,可以将尚未托管在Cloudflare 的域名接入Cloudflare CDN。

准备工作

  • 一个未被Cloudflare 托管的域名
  • 一个ZoneABC 账号

接入步骤

  1. 首先去这里注册一个 ZoneABC 账号,然后登录注册自己喜欢的子域名。
注册域名
注册域名
  1. 然后在ZoneABC 控制台,点击子域名,添加A或者AAAA记录(你的实际服务器),并开启代理。
添加源服务器解析记录
添加源服务器解析记录
  1. 然后刷新页面,即可看到已经可以添加自定义主机名。
添加自定义主机名
添加自定义主机名
  1. 点击详情,查看要验证的记录,添加DCV验证记录,添加验证所有权记录,添加CNAME记录,刷新状态。
点击详情
点击详情
查看要验证的记录
查看要验证的记录
添加DCV验证记录
添加DCV验证记录
添加验证所有权记录
添加验证所有权记录
添加CNAME记录
添加CNAME记录
刷新状态
刷新状态
  1. 然后在源服务器上生成自签证书
mkdir -p /etc/ssl/custom/
openssl req -x509 -nodes -days 36500 -newkey rsa:2048 -keyout /etc/ssl/custom/key.pem -out /etc/ssl/custom/cert.pem

然后一路无脑回车,就可以生成自签证书了。

无脑回车
无脑回车
  1. 然后在源服务器上添加两个网站,一个是 yoursubdomain.zabc.net,一个是 www.yourdomain.com

这里以Nginx为例:

# yoursubdomain.zabc.net.conf
server
    {
        listen 80;
        listen [::]:80;
        server_name yoursubdomain.zabc.net ;
        location / {
            return 301 https://$host$request_uri;
        }
        access_log  /home/wwwlogs/yoursubdomain.zabc.net.log;
    }
server
    {
        listen 443 ssl;
        listen [::]:443 ssl;
        http2 on;
        server_name yoursubdomain.zabc.net ;
        ssl_certificate /etc/ssl/custom/cert.pem;
        ssl_certificate_key /etc/ssl/custom/key.pem;
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
        ssl_prefer_server_ciphers on;
        ssl_ciphers "TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256:EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5";
        ssl_session_cache builtin:1000 shared:SSL:10m;

        # 所有请求都返回 403
        location / {
            return 403;
        }
        error_page 403 /403.html;
        location = /403.html {
            root /home/wwwroot/yoursubdomain.zabc.net;
        }
        access_log  /home/wwwlogs/yoursubdomain.zabc.net.log;
    }
# www.yourdomain.com.conf

# HTTP 到 HTTPS 的重定向配置
server {
    listen 80;
    listen [::]:80; # 监听 IPv6 的 80 端口
    server_name www.yourdomain.com; # 定义域名

    # 将所有 HTTP 请求永久重定向到 HTTPS
    location / {
        return 301 https://$host$request_uri;
    }

    # HTTP 访问日志
    access_log /home/wwwlogs/www.yourdomain.com_http_access.log;
    # HTTP 错误日志,记录警告及以上级别错误
    error_log  /home/wwwlogs/www.yourdomain.com_http_error.log warn;
}

# HTTPS 服务器配置
server {
    listen 443 ssl; # 监听 IPv4 的 443 端口,启用 SSL 和 HTTP/2
    listen [::]:443 ssl; # 监听 IPv6 的 443 端口,启用 SSL 和 HTTP/2
    http2 on; # 启用 HTTP/2

    server_name www.yourdomain.com; # 定义域名

    # SSL 证书和私钥路径
    ssl_certificate /etc/ssl/custom/cert.pem;
    ssl_certificate_key /etc/ssl/custom/key.pem;

    # SSL/TLS 安全设置
    ssl_session_timeout 5m; # SSL 会话缓存超时时间
    ssl_protocols TLSv1.2 TLSv1.3; # 仅允许使用 TLSv1.2 和 TLSv1.3,提高安全性
    ssl_prefer_server_ciphers on; # 优先使用服务器端定义的密码套件
    # 定义强大的 SSL 密码套件列表
    ssl_ciphers "TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256";
    ssl_session_cache shared:SSL:10m; # SSL 会话缓存配置

    # 网站根目录和默认索引文件
    root /home/wwwroot/www.yourdomain.com; # 定义网站的根目录
    index index.html index.htm index.php default.html default.htm default.php; # 默认索引文件的查找顺序

    # 自定义错误页面
    error_page 403 /403.html; # 当出现 403 Forbidden 错误时,显示 /403.html
    error_page 404 /404.html; # 当出现 404 Not Found 错误时,显示 /404.html

    # 主要的 location 块,处理所有请求
    location / {
        # 尝试查找对应的文件、目录或返回 404 错误
        # $uri: 尝试直接匹配请求的 URI 为文件
        # $uri/: 尝试匹配请求的 URI 为目录(然后根据 index 指令查找默认文件)
        # =404: 如果以上都未找到,则返回 404 错误
        try_files $uri $uri/ =404;
    }

    # HTTPS 访问日志
    access_log /home/wwwlogs/www.yourdomain.com_https_access.log;
    # HTTPS 错误日志,记录警告及以上级别错误
    error_log  /home/wwwlogs/www.yourdomain.com_https_error.log warn;
}
  1. 然后检测配置并重启Nginx
nginx -t
nginx -s reload

即可添加成功

添加成功-1
添加成功-1
添加成功-2
添加成功-2