使用ZoneABC 子域名接入 Cloudflare SaaS
本文介绍了如何利用 ZoneABC 提供的免费子域名服务来接入 Cloudflare SaaS,从而将你未托管在 Cloudflare 的域名也纳入其强大的 CDN 和安全保护之下。
前言
ZoneABC 是一个由一群技术爱好者、专业工程师和项目经理组成的非营利性组织。其使命是通过提供免费、可靠的子域名服务,并由 Cloudflare 提供企业级保护,来降低开发者、学生、教育工作者和开源社区的入门门槛。ZoneABC 坚信,稳定、安全的互联网基础设施不应仅是大型企业的特权,而是应该让所有用户都能专注于创新,而无需担忧基础设施问题。
目前ZoneABC 开启了 Cloudflare SaaS
,可以将尚未托管在Cloudflare 的域名接入Cloudflare CDN。
准备工作
- 一个未被Cloudflare 托管的域名
- 一个ZoneABC 账号
接入步骤
- 首先去这里注册一个 ZoneABC 账号,然后登录注册自己喜欢的子域名。

- 然后在ZoneABC 控制台,点击子域名,添加A或者AAAA记录(你的实际服务器),并开启代理。

- 然后刷新页面,即可看到已经可以添加自定义主机名。

- 点击详情,查看要验证的记录,添加DCV验证记录,添加验证所有权记录,添加CNAME记录,刷新状态。






- 然后在源服务器上生成自签证书
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
然后一路无脑回车,就可以生成自签证书了。

- 然后在源服务器上添加两个网站,一个是
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;
}
- 然后检测配置并重启Nginx
nginx -t
nginx -s reload
即可添加成功

