Cloudflare DDoS 防护
Cloudflare 为您的服务器和应用程序提供强大的 DDoS 防护层。
使用 Cloudflare 的代理、CDN 和安全功能时,所有流向您 Coolify 托管应用的入站流量都会受到保护,免受 DDoS 等恶意攻击,并通过 Cloudflare 的全球网络进行安全加固。
为什么在 Coolify 中使用 Cloudflare 进行 DDoS 防护?
- 在流量到达您的服务器之前拦截恶意流量。
- 在 DDoS 攻击期间无需扩展服务器资源——Cloudflare 会吸收攻击影响。
- 通过 Cloudflare 的全球网络代理您的应用程序,从而隐藏服务器的真实 IP 地址。
何时不应使用 Cloudflare 进行 DDoS 防护
- 您不希望将所有流量路由到 Cloudflare 网络。
- 隐私顾虑:Cloudflare 会终止 TLS 连接,这意味着他们可以检查入站请求。
- 您需要免费支持深层子域名的泛域名证书(超过 1 级的子域名,例如
*.sub.domain.com,而 Cloudflare 免费版不提供此功能)。
示例数据
以下数据在本指南中仅作为示例。请按照步骤操作时将其替换为您的实际数据:
- 源服务器 IPv4 地址:
203.0.113.1 - 域名:
shadowarcanist.com - 用户名:
shadowarcanist
工作原理
以下是一张简单的高层概览图,帮助您直观地了解其工作原理:
1. 设置源 TLS 证书
您的服务器与 Cloudflare 之间的通信将通过 TLS 证书进行加密。
有两种设置方法:
- 使用 Cloudflare 提供的 TLS 证书
- 从受信任的公共证书颁发机构(CA)获取您自己的 TLS 证书(这需要 DNS 验证挑战)
Here's a concise comparison table between a Cloudflare Origin Certificate and a Public CA Certificate:
| 特性 | Cloudflare 源证书 | 公共 CA 证书 |
|---|---|---|
| 信任方 | 仅限 Cloudflare | 浏览器、操作系统、Cloudflare |
| 使用场景 | 仅限 Cloudflare ↔ 源服务器 | 任何直接客户端 |
| 直接浏览器访问 | 如果用户绕过 Cloudflare,会显示证书错误 | ✅ 正常工作 |
| 需要 CF 代理 | ✅ 是 | ❌ 否 |
| 无 CF 环境可用 | ❌ 否 | ✅ 是 |
| 颁发机构 | Cloudflare | 公共 CA(例如:Let's Encrypt) |
| 费用 | 免费 | 免费 |
| DNS 验证挑战 | ❌ 否 | ✅ 是 |
提示
如果您计划让 Cloudflare 始终位于应用程序前端,请使用 Cloudflare 源证书。否则,请使用公共 CA 证书。
There are 2 ways to setup the Origin TLS Certificate so follow one of the methods from below:
A simple high-level overview diagram to give you a visual idea of how this works:

A. 创建 Cloudflare 源证书

- 在 Cloudflare 仪表板中,进入 SSL/TLS。
- 选择 Origin Server。
- 选择 Origin Certificates
- 点击 Create Certificate 按钮。

- 密钥类型选择 RSA (2048)。
- 添加证书需要覆盖的主机名。
- 将证书有效期设置为 15 年。
- 点击 Create 按钮。
注意!
shadowarcanist.com仅覆盖主域名。*.shadowarcanist.com将覆盖所有子域名。
在 Cloudflare 免费版中,泛域名证书仅覆盖一层子域名
例如,它适用于 coolify.shadowarcanist.com,但不适用于 www.coolify.shadowarcanist.com。
若要覆盖多层子域名,您需要购买 高级证书管理器 ↗

- 密钥格式选择 PEM。
- 复制您的 Origin Certificate(源证书) 并保存到安全位置
- 复制您的 Private Key(私钥) 并保存到安全位置
- 点击 Ok 按钮。
接下来,您需要将这些文件添加到运行 Coolify 的服务器,并配置 Coolify 使用该证书。
B. 将证书添加到您的服务器
通过 SSH 连接到您的服务器,或使用 Coolify 的终端功能。本指南中,我使用的是外部终端:
ssh shadowarcanist@203.0.113.1登录成功后,导航至 Coolify 代理目录:
$ cd /data/coolify/proxyCaddy 和 Traefik 的证书位置略有不同,请根据您使用的代理程序选择下方对应的部分。
创建 certs 目录:
$ mkdir certs验证是否创建成功:
$ ls
> acme.json certs docker-compose.yml dynamic现在,进入 certs 目录:
$ cd certs创建 caddy/data/certs 目录:
$ mkdir -p caddy/data/certs验证是否创建成功:
$ ls caddy/data
> certs现在,进入 certs 目录:
$ cd caddy/data/certs为证书和私钥创建两个新文件:
$ touch shadowarcanist.cert shadowarcanist.key验证文件是否创建成功:
$ ls
> shadowarcanist.cert shadowarcanist.key打开 shadowarcanist.cert 文件并粘贴来自 Cloudflare 仪表板的证书:
$ nano shadowarcanist.cert 粘贴证书后保存并退出。
对 shadowarcanist.key 文件执行相同操作并粘贴私钥:
$ nano shadowarcanist.key 保存并退出。
现在,源证书已安装在您的服务器上。
C. 配置 Coolify 代理以使用源证书

- 进入侧边栏的 Server(服务器) 部分。
- 选择 Proxy(代理)。
- 打开 Dynamic Configuration(动态配置) 页面
- 点击 Add(添加) 按钮
系统将提示您输入动态配置。
Caddy 和 Traefik 的动态配置文件略有不同,请根据您使用的代理程序选择下方对应的部分。

- 为您的配置命名(必须以
.yaml结尾)。 - 在配置字段中输入以下详细信息:
tls:
certificates:
-
certFile: /traefik/certs/shadowarcanist.cert
keyFile: /traefik/certs/shadowarcanist.key- 保存配置
添加多个证书
如果您想添加多个证书和密钥,可以按以下方式操作:
tls:
certificates:
-
certFile: /traefik/certs/shadowarcanist.cert
keyFile: /traefik/certs/shadowarcanist.key
-
certFile: /traefik/certs/name2.cert
keyFile: /traefik/certs/name2.key
-
certFile: /traefik/certs/name3.cert
keyFile: /traefik/certs/name3.key
- 为您的配置命名(必须以
.caddy结尾)。 - 在配置字段中输入以下详细信息:
*.shadowarcanist.com, shadowarcanist.com {
tls /data/certs/shadowarcanist.cert /data/certs/shadowarcanist.key
}注意
通配符 *.shadowarcanist.com 覆盖所有子域名,如果您仅保护单个域名(即 shadowarcanist.com),请将其排除。
- 保存配置
添加多个证书
如果您想添加多个证书和密钥,可以按以下方式操作:
*.shadowarcanist.com, shadowarcanist.com {
tls /data/certs/shadowarcanist.cert /data/certs/shadowarcanist.key
}
*.name2.com, name2.com {
tls /data/certs/name2.cert /data/certs/name2.key
}
*.name3.com, name3.com {
tls /data/certs/name3.cert /data/certs/name3.key
}从现在开始,Coolify 将针对匹配主机名的请求使用源证书。
A simple high-level overview diagram to give you a visual idea of how this works:

我们已有设置 TLS 证书 DNS 验证挑战的指南,您可以在此处参考:
使用上述指南完成 DNS 验证挑战设置后,请返回本指南继续操作。
2. 设置 DNS 记录
要通过 Cloudflare 路由流量,请在 Cloudflare 中配置您的 DNS 记录:
- 在 Cloudflare 仪表板中,进入 DNS。
- 选择 Records(记录)。
- 添加 2 条 A 记录:
- 名称分别输入为
shadowarcanist.com和* - 将服务器的 IP 地址 作为两条记录的内容。
- 将两条记录的代理状态设置为 Proxied(已代理)。
注意
为两条 A 记录 shadowarcanist.com 和 * 启用“Proxied(橙色云朵)”选项,将通过通配符代理根域名和所有一级子域名。
如果您仅需对特定域名进行代理(或防护 DDoS),则无需此操作。在这种情况下,只需为您需要保护的域名启用代理即可。
3. 设置 TLS 加密
要使 Cloudflare 在连接您的服务器时使用更严格的加密,请在 Cloudflare 中配置 TLS 加密:
- 在 Cloudflare 中进入 SSL/TLS。
- 选择 Overview(概览)。
- 点击 Configure(配置) 按钮
- 加密模式选择 Full (Strict)(完全(严格))。
- 点击 Save(保存) 按钮
4. 设置始终使用 HTTPS
要使 Cloudflare 自动将 HTTP 请求重定向到 HTTPS,请在 Cloudflare 中配置重定向:
- 在 Cloudflare 中进入 SSL/TLS
- 选择 Edge Certificates(边缘证书)。
- 启用 Always Use HTTPS(始终使用 HTTPS)。
5. 配置防火墙
注意
此步骤完全可选,但建议执行。
配置您的防火墙,仅允许来自 Cloudflare IP 段 ↗ 的端口 443 入站流量。
除 SSH 端口外,阻止所有其他入站流量。
这可以防止攻击者绕过 Cloudflare,直接通过 80 或 443 端口向您的服务器发起流量攻击。
现在设置完成!您的服务器已配置为使用源 TLS 证书,所有流量均通过 Cloudflare 网络进行代理,因此所有入站攻击(如 DDoS)都会在到达您的服务器之前被 Cloudflare 拦截。
