Cloudflare 从接入域名到部署上线:Pages、Workers、Tunnel 常用命令全整理
Cloudflare 部署完整教程|附完整命令
Cloudflare 是目前非常流行的一站式网络服务平台,常用于 域名 DNS 托管、HTTPS 证书、CDN 加速、DDoS 防护、Cloudflare Pages 静态网站部署、Cloudflare Workers 无服务器函数部署、Cloudflare Tunnel 内网穿透 等场景。
如果你想把自己的网站、博客、前端项目、API 服务或者内网应用部署到 Cloudflare 上,本文将以实战方式,从账号准备、域名接入、DNS 配置、Pages 部署、Workers 部署、Tunnel 部署到常见问题处理,完整讲解 Cloudflare 的部署流程,并附上常用命令。
一、Cloudflare 可以用来部署什么?
在正式开始之前,先简单了解 Cloudflare 常见的几种部署方式。
| 功能 | 适合场景 | 是否需要服务器 |
|---|---|---|
| Cloudflare DNS | 域名解析、接入 Cloudflare | 不需要 |
| Cloudflare CDN | 网站加速、防护 | 需要源站或 Pages |
| Cloudflare Pages | 部署静态网站、前端项目、博客 | 不需要 |
| Cloudflare Workers | 部署 Serverless API、边缘函数 | 不需要 |
| Cloudflare Tunnel | 内网穿透、隐藏源站 IP | 需要本地或服务器 |
| R2 | 对象存储,替代部分 S3 场景 | 不需要 |
本文重点介绍以下几类最常用部署:
- 域名接入 Cloudflare;
- Cloudflare Pages 部署静态网站;
- Cloudflare Workers 部署接口服务;
- Cloudflare Tunnel 部署内网服务;
- 常用优化与排错方法。
二、准备工作
在开始之前,你需要准备以下内容:
1. 一个 Cloudflare 账号
访问 Cloudflare 官网注册账号:
https://www.cloudflare.com/
注册完成后登录控制台。
2. 一个域名
如果你已经有域名,可以直接接入 Cloudflare。
如果还没有域名,可以在以下平台购买:
- Cloudflare Registrar;
- Namesilo;
- Namecheap;
- GoDaddy;
- 阿里云;
- 腾讯云。
注意:如果域名在国内注册,部分场景可能涉及备案问题;如果只是使用 Cloudflare Pages 或 Workers 的默认域名,则通常不需要自有域名。
3. 本地安装 Node.js
如果你需要部署 Cloudflare Pages 或 Workers,建议本地安装 Node.js。
查看是否已安装:
node -v
npm -v
如果没有安装,可以前往 Node.js 官网下载:
https://nodejs.org/
建议安装 LTS 长期支持版本。
4. 安装 Git
很多 Cloudflare 项目都需要通过 GitHub、GitLab 或命令行部署。
查看 Git 是否安装:
git --version
如果没有安装:
Ubuntu / Debian:
sudo apt update
sudo apt install git -y
CentOS / Rocky Linux:
sudo yum install git -y
macOS:
brew install git
Windows 可以访问:
https://git-scm.com/
三、域名接入 Cloudflare
1. 添加站点
登录 Cloudflare 控制台后,点击:
Add a site
输入你的域名,例如:
example.com
Cloudflare 会扫描当前域名已有的 DNS 记录。
2. 选择套餐
一般个人网站、博客、测试项目选择免费套餐即可:
Free Plan
免费套餐已经包含:
- DNS 托管;
- CDN;
- 免费 HTTPS;
- 基础 DDoS 防护;
- Page Rules;
- Workers 免费额度;
- Pages 免费部署额度。
3. 修改域名 NS 服务器
Cloudflare 会提供两条 Nameserver,例如:
alice.ns.cloudflare.com
bob.ns.cloudflare.com
你需要到原域名注册商后台,把原来的 NS 服务器修改为 Cloudflare 提供的 NS。
例如原来可能是:
ns1.domain-provider.com
ns2.domain-provider.com
修改为:
alice.ns.cloudflare.com
bob.ns.cloudflare.com
修改后等待生效,一般需要几分钟到数小时,最长可能 24-48 小时。
4. 检查 DNS 是否生效
可以使用以下命令检查:
dig NS example.com
或者:
nslookup -type=NS example.com
如果结果中出现 Cloudflare 的 NS,说明域名已经成功接入。
示例:
dig NS example.com +short
输出类似:
alice.ns.cloudflare.com.
bob.ns.cloudflare.com.
四、配置 Cloudflare DNS 解析
进入 Cloudflare 控制台,选择你的域名,然后进入:
DNS > Records
常见 DNS 记录如下。
1. 解析主域名到服务器 IP
如果你有自己的服务器,例如服务器 IP 是:
1.2.3.4
添加 A 记录:
| 类型 | 名称 | 值 |
|---|---|---|
| A | @ | 1.2.3.4 |
如果要解析 www.example.com:
| 类型 | 名称 | 值 |
|---|---|---|
| CNAME | www | example.com |
2. 命令行检测 DNS
查看 A 记录:
dig A example.com +short
查看 CNAME:
dig CNAME www.example.com +short
使用 nslookup:
nslookup example.com
3. 橙色云朵和灰色云朵区别
Cloudflare DNS 记录旁边通常有一个云朵图标:
| 状态 | 含义 |
|---|---|
| 橙色云朵 | 流量经过 Cloudflare CDN 代理 |
| 灰色云朵 | 仅 DNS 解析,不经过 Cloudflare |
如果你希望隐藏源站 IP、使用 CDN、防护攻击,应开启橙色云朵。
如果是邮箱、某些特殊服务、非 HTTP/HTTPS 端口,通常需要灰色云朵。
五、配置 SSL/TLS HTTPS
进入:
SSL/TLS > Overview
推荐选择:
Full
如果你的源站服务器已经安装了有效证书,推荐选择:
Full (strict)
不同模式说明:
| 模式 | 说明 |
|---|---|
| Off | 不启用 HTTPS,不推荐 |
| Flexible | 用户到 Cloudflare 是 HTTPS,Cloudflare 到源站是 HTTP |
| Full | 用户到 Cloudflare 是 HTTPS,Cloudflare 到源站也是 HTTPS,但不严格验证证书 |
| Full strict | 严格验证源站证书,最安全 |
推荐配置:
SSL/TLS encryption mode: Full 或 Full (strict)
同时开启:
SSL/TLS > Edge Certificates > Always Use HTTPS
这样访问 HTTP 会自动跳转到 HTTPS。
六、Cloudflare Pages 部署静态网站
Cloudflare Pages 非常适合部署静态网站,比如:
- Vue;
- React;
- Vite;
- Next.js 静态导出;
- Nuxt 静态站点;
- Astro;
- Hugo;
- Hexo;
- Docsify;
- VitePress;
- VuePress。
下面以 Vite 项目为例。
1. 创建 Vite 项目
npm create vite@latest my-cloudflare-site
进入项目目录:
cd my-cloudflare-site
安装依赖:
npm install
本地运行:
npm run dev
如果可以正常访问,说明项目没问题。
2. 打包项目
npm run build
Vite 默认构建产物目录是:
dist
3. 安装 Wrangler CLI
Wrangler 是 Cloudflare 官方命令行工具。
npm install -g wrangler
查看版本:
wrangler --version
登录 Cloudflare:
wrangler login
执行后浏览器会打开 Cloudflare 授权页面,确认授权即可。
4. 使用命令部署 Pages
进入项目目录后执行:
wrangler pages project create my-cloudflare-site
然后部署:
wrangler pages deploy dist --project-name=my-cloudflare-site
部署成功后会得到一个默认域名,类似:
https://my-cloudflare-site.pages.dev
以后每次更新网站,只需要重新打包并部署:
npm run build
wrangler pages deploy dist --project-name=my-cloudflare-site
5. 绑定自定义域名
进入 Cloudflare 控制台:
Workers & Pages > Pages > 你的项目 > Custom domains
点击:
Set up a custom domain
填写:
www.example.com
或:
example.com
根据提示完成绑定。
如果使用 www.example.com,一般会自动创建 CNAME 记录:
www CNAME my-cloudflare-site.pages.dev
如果绑定主域名 example.com,Cloudflare 也会自动处理。
七、通过 GitHub 自动部署 Cloudflare Pages
相比命令行手动部署,更推荐使用 GitHub 自动部署。只要你 push 代码,Cloudflare Pages 就会自动构建并发布。
1. 初始化 Git 仓库
在项目目录中执行:
git init
git add .
git commit -m "init cloudflare pages project"
2. 创建 GitHub 仓库
假设你的 GitHub 仓库地址是:
https://github.com/yourname/my-cloudflare-site.git
添加远程仓库:
git remote add origin https://github.com/yourname/my-cloudflare-site.git
git branch -M main
git push -u origin main
3. 在 Cloudflare Pages 中连接 GitHub
进入 Cloudflare 控制台:
Workers & Pages > Create application > Pages > Connect to Git
选择 GitHub 仓库。
常见构建配置如下:
Vite
Build command: npm run build
Build output directory: dist
React Create React App
Build command: npm run build
Build output directory: build
Vue CLI
Build command: npm run build
Build output directory: dist
Astro
Build command: npm run build
Build output directory: dist
VitePress
Build command: npm run docs:build
Build output directory: docs/.vitepress/dist
Hexo
Build command: npm install && npx hexo generate
Build output directory: public
4. 更新部署
以后修改代码后:
git add .
git commit -m "update site"
git push
Cloudflare 会自动开始构建部署。
八、Cloudflare Workers 部署接口服务
Cloudflare Workers 是运行在 Cloudflare 边缘节点上的 Serverless 服务,非常适合部署:
- API 接口;
- Webhook;
- 重定向服务;
- 轻量代理;
- 边缘缓存逻辑;
- A/B 测试;
- 鉴权中间件。
1. 创建 Workers 项目
使用官方脚手架:
npm create cloudflare@latest my-worker
根据提示选择:
Worker
进入目录:
cd my-worker
2. 本地运行 Worker
npm run dev
或者:
wrangler dev
默认会在本地启动开发服务。
3. 示例 Worker 代码
打开 src/index.ts 或 src/index.js,写入:
export default {
async fetch(request, env, ctx) {
return new Response("Hello Cloudflare Workers!", {
headers: {
"Content-Type": "text/plain;charset=UTF-8"
}
});
}
};
4. 部署 Worker
npm run deploy
或者:
wrangler deploy
部署成功后,会得到类似地址:
https://my-worker.yourname.workers.dev
5. Worker 返回 JSON 示例
export default {
async fetch(request, env, ctx) {
const data = {
message: "Hello Cloudflare",
time: new Date().toISOString()
};
return new Response(JSON.stringify(data), {
headers: {
"Content-Type": "application/json;charset=UTF-8"
}
});
}
};
重新部署:
wrangler deploy
访问后会返回 JSON 数据。
6. 绑定自定义域名
进入:
Workers & Pages > Workers > 你的 Worker > Settings > Triggers
添加自定义域名,例如:
api.example.com
也可以通过路由绑定:
example.com/api/*
这样就可以通过自己的域名访问 Worker。
九、Cloudflare Tunnel 部署内网服务
Cloudflare Tunnel 可以让你把本地或服务器上的服务安全暴露到公网,而不需要开放服务器端口,也可以隐藏源站 IP。
适合场景:
- 本地开发环境临时访问;
- 家庭 NAS;
- 内网 Web 服务;
- 自建面板;
- Docker 服务;
- SSH 访问;
- Home Assistant;
- Jellyfin;
- Uptime Kuma。
十、安装 cloudflared
Ubuntu / Debian
curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb -o cloudflared.deb
sudo dpkg -i cloudflared.deb
查看版本:
cloudflared --version
CentOS / Rocky Linux
curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-x86_64.rpm -o cloudflared.rpm
sudo rpm -ivh cloudflared.rpm
macOS
brew install cloudflared
Docker 安装方式
docker run --rm cloudflare/cloudflared:latest --version
十一、创建 Cloudflare Tunnel
1. 登录 Cloudflare
cloudflared tunnel login
执行后会打开浏览器,选择你的域名并授权。
2. 创建 Tunnel
cloudflared tunnel create my-tunnel
查看 Tunnel 列表:
cloudflared tunnel list
创建成功后会生成一个 Tunnel ID。
3. 创建配置文件
创建目录:
mkdir -p ~/.cloudflared
编辑配置文件:
nano ~/.cloudflared/config.yml
写入以下内容:
tunnel: 你的Tunnel-ID
credentials-file: /root/.cloudflared/你的Tunnel-ID.json
ingress:
- hostname: app.example.com
service: http://localhost:3000
- service: http_status:404
如果当前用户不是 root,请把路径改成实际路径,例如:
credentials-file: /home/ubuntu/.cloudflared/你的Tunnel-ID.json
4. 创建 DNS 路由
cloudflared tunnel route dns my-tunnel app.example.com
这会自动在 Cloudflare DNS 中创建一条 CNAME 记录。
5. 启动 Tunnel
cloudflared tunnel run my-tunnel
如果你的本地服务运行在:
http://localhost:3000
那么现在就可以通过:
https://app.example.com
访问该服务。
6. 设置为系统服务
如果希望 Tunnel 开机自启:
sudo cloudflared service install
启动服务:
sudo systemctl start cloudflared
设置开机自启:
sudo systemctl enable cloudflared
查看状态:
sudo systemctl status cloudflared
查看日志:
journalctl -u cloudflared -f
十二、使用 Docker Compose 部署 cloudflared
如果你习惯使用 Docker,可以使用 Docker Compose。
创建目录:
mkdir -p ~/cloudflared
cd ~/cloudflared
创建配置文件:
nano docker-compose.yml
写入:
version: "3.8"
services:
cloudflared:
image: cloudflare/cloudflared:latest
container_name: cloudflared
restart: unless-stopped
command: tunnel run
volumes:
- ./cloudflared:/etc/cloudflared
把 config.yml 和凭证文件放到:
~/cloudflared/cloudflared
启动:
docker compose up -d
查看日志:
docker logs -f cloudflared
停止:
docker compose down
十三、Cloudflare 常用安全与性能设置
1. 开启 Always Use HTTPS
路径:
SSL/TLS > Edge Certificates > Always Use HTTPS
作用:强制 HTTP 跳转 HTTPS。
2. 开启 Brotli 压缩
路径:
Speed > Optimization > Brotli
作用:压缩文本资源,提高加载速度。
3. 配置缓存规则
路径:
Caching > Cache Rules
静态资源推荐缓存:
*.css
*.js
*.png
*.jpg
*.jpeg
*.gif
*.webp
*.svg
*.woff
*.woff2
可以设置较长缓存时间,例如:
Browser Cache TTL: 1 month
4. 开启防火墙规则
路径:
Security > WAF
可以针对异常访问、特定国家、恶意路径做限制。
例如阻止某些路径访问:
URI Path contains /wp-admin
如果你不是 WordPress 网站,可以直接拦截大量扫描请求。
5. 隐藏源站 IP
如果你使用 Cloudflare 代理,应尽量避免源站 IP 暴露。
建议:
- DNS 记录开启橙色云朵;
- 源站防火墙只允许 Cloudflare IP 访问;
- 使用 Cloudflare Tunnel;
- 不要在历史 DNS 记录中暴露真实 IP;
- 不要让邮件服务器和网站源站共用同一个 IP。
Cloudflare 官方 IP 列表:
https://www.cloudflare.com/ips/
十四、源站服务器只允许 Cloudflare IP 访问
如果你有自己的服务器,可以用防火墙限制只允许 Cloudflare IP 访问 80 和 443。
以下以 Ubuntu 的 UFW 为例。
先清空或检查规则:
sudo ufw status numbered
允许 SSH,防止自己无法登录:
sudo ufw allow 22/tcp
允许 Cloudflare IPv4:
for ip in $(curl -s https://www.cloudflare.com/ips-v4); do
sudo ufw allow from $ip to any port 80 proto tcp
sudo ufw allow from $ip to any port 443 proto tcp
done
允许 Cloudflare IPv6:
for ip in $(curl -s https://www.cloudflare.com/ips-v6); do
sudo ufw allow from $ip to any port 80 proto tcp
sudo ufw allow from $ip to any port 443 proto tcp
done
开启 UFW:
sudo ufw enable
查看规则:
sudo ufw status
注意:如果你配置错误,可能导致网站无法访问。操作前务必确认 SSH 端口已经放行。
十五、常见问题排查
1. 域名接入后一直不生效
检查 NS 是否修改成功:
dig NS example.com +short
如果仍然显示原域名服务商的 NS,说明修改还没有生效,继续等待或检查是否保存成功。
2. 网站出现 521 错误
521 通常表示 Cloudflare 无法连接源站服务器。
常见原因:
- 源站服务器未启动;
- 防火墙拦截了 Cloudflare;
- Nginx / Apache 未监听端口;
- DNS 解析 IP 错误。
检查服务端口:
sudo ss -tlnp
检查 Nginx:
sudo systemctl status nginx
检查防火墙:
sudo ufw status
3. 网站出现 522 错误
522 表示连接超时。
排查:
ping example.com
curl -I https://example.com
检查源站负载:
top
查看服务器网络:
ip addr
4. HTTPS 出现重定向循环
通常是 SSL 模式配置不正确。
如果源站支持 HTTPS,建议使用:
Full
或:
Full (strict)
不要在源站和 Cloudflare 同时配置冲突的 HTTP/HTTPS 跳转规则。
5. Pages 部署后刷新 404
如果是 Vue Router、React Router 这类前端单页应用,需要配置重写规则。
在项目 public 目录下创建 _redirects 文件:
echo "/* /index.html 200" > public/_redirects
重新构建部署:
npm run build
wrangler pages deploy dist --project-name=my-cloudflare-site
6. Wrangler 登录失败
可以尝试重新登录:
wrangler logout
wrangler login
查看当前登录用户:
wrangler whoami
十六、完整部署命令汇总
下面整理一份常用命令,方便复制使用。
1. 安装 Wrangler
npm install -g wrangler
wrangler --version
wrangler login
2. 创建并部署 Vite 到 Pages
npm create vite@latest my-cloudflare-site
cd my-cloudflare-site
npm install
npm run build
wrangler pages project create my-cloudflare-site
wrangler pages deploy dist --project-name=my-cloudflare-site
更新部署:
npm run build
wrangler pages deploy dist --project-name=my-cloudflare-site
3. GitHub 推送命令
git init
git add .
git commit -m "init project"
git branch -M main
git remote add origin https://github.com/yourname/my-cloudflare-site.git
git push -u origin main
更新:
git add .
git commit -m "update"
git push
4. 创建 Workers 项目
npm create cloudflare@latest my-worker
cd my-worker
npm run dev
wrangler deploy
5. 安装并运行 Cloudflare Tunnel
cloudflared tunnel login
cloudflared tunnel create my-tunnel
cloudflared tunnel list
cloudflared tunnel route dns my-tunnel app.example.com
cloudflared tunnel run my-tunnel
设置系统服务:
sudo cloudflared service install
sudo systemctl start cloudflared
sudo systemctl enable cloudflared
sudo systemctl status cloudflared
十七、总结
Cloudflare 的优势在于它不仅仅是一个 DNS 或 CDN 平台,而是一套完整的现代化网站部署与网络安全解决方案。
如果你只是想部署一个静态网站,推荐使用 Cloudflare Pages,它免费、快速、支持 GitHub 自动部署,非常适合个人博客、文档站和前端项目。
如果你需要部署轻量 API 或边缘逻辑,可以选择 Cloudflare Workers,它无需服务器,部署简单,全球边缘节点响应速度快。
如果你希望把本地服务、NAS 或服务器内网应用暴露到公网,同时不想开放端口或暴露真实 IP,那么 Cloudflare Tunnel 是非常合适的方案。
一个比较推荐的组合是:
Cloudflare DNS + Cloudflare Pages + Cloudflare Workers + Cloudflare Tunnel
通过这套组合,你可以完成从域名接入、网站部署、接口服务、HTTPS、安全防护、CDN 加速到内网穿透的完整部署流程。对于个人开发者、小型团队和独立站点来说,Cloudflare 免费套餐已经足够完成绝大多数基础需求。