Coolify logoCoolify

Cloudflare DDoS 防护

Cloudflare 为您的服务器和应用程序提供强大的 DDoS 防护层。

使用 Cloudflare 的代理、CDN 和安全功能时,所有流向您 Coolify 托管应用的入站流量都会受到保护,免受 DDoS 等恶意攻击,并通过 Cloudflare 的全球网络进行安全加固。


为什么在 Coolify 中使用 Cloudflare 进行 DDoS 防护?

  1. 在流量到达您的服务器之前拦截恶意流量。
  2. 在 DDoS 攻击期间无需扩展服务器资源——Cloudflare 会吸收攻击影响。
  3. 通过 Cloudflare 的全球网络代理您的应用程序,从而隐藏服务器的真实 IP 地址。

何时不应使用 Cloudflare 进行 DDoS 防护

  1. 您不希望将所有流量路由到 Cloudflare 网络。
  2. 隐私顾虑:Cloudflare 会终止 TLS 连接,这意味着他们可以检查入站请求。
  3. 您需要免费支持深层子域名的泛域名证书(超过 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 源证书

  1. 在 Cloudflare 仪表板中,进入 SSL/TLS
  2. 选择 Origin Server
  3. 选择 Origin Certificates
  4. 点击 Create Certificate 按钮。
  1. 密钥类型选择 RSA (2048)
  2. 添加证书需要覆盖的主机名。
  3. 将证书有效期设置为 15 年
  4. 点击 Create 按钮。

注意!

  • shadowarcanist.com 仅覆盖主域名。
  • *.shadowarcanist.com 将覆盖所有子域名。

在 Cloudflare 免费版中,泛域名证书仅覆盖一层子域名

例如,它适用于 coolify.shadowarcanist.com,但不适用于 www.coolify.shadowarcanist.com

若要覆盖多层子域名,您需要购买 高级证书管理器 ↗

  1. 密钥格式选择 PEM
  2. 复制您的 Origin Certificate(源证书) 并保存到安全位置
  3. 复制您的 Private Key(私钥) 并保存到安全位置
  4. 点击 Ok 按钮。

接下来,您需要将这些文件添加到运行 Coolify 的服务器,并配置 Coolify 使用该证书。


B. 将证书添加到您的服务器

通过 SSH 连接到您的服务器,或使用 Coolify 的终端功能。本指南中,我使用的是外部终端:

ssh shadowarcanist@203.0.113.1

登录成功后,导航至 Coolify 代理目录:

$ cd /data/coolify/proxy

Caddy 和 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 代理以使用源证书

  1. 进入侧边栏的 Server(服务器) 部分。
  2. 选择 Proxy(代理)
  3. 打开 Dynamic Configuration(动态配置) 页面
  4. 点击 Add(添加) 按钮

系统将提示您输入动态配置。

Caddy 和 Traefik 的动态配置文件略有不同,请根据您使用的代理程序选择下方对应的部分。

  1. 为您的配置命名(必须以 .yaml 结尾)。
  2. 在配置字段中输入以下详细信息:
tls:
  certificates:
    -
      certFile: /traefik/certs/shadowarcanist.cert
      keyFile: /traefik/certs/shadowarcanist.key
  1. 保存配置

添加多个证书

如果您想添加多个证书和密钥,可以按以下方式操作:

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
  1. 为您的配置命名(必须以 .caddy 结尾)。
  2. 在配置字段中输入以下详细信息:
*.shadowarcanist.com, shadowarcanist.com {
    tls /data/certs/shadowarcanist.cert /data/certs/shadowarcanist.key
}

注意

通配符 *.shadowarcanist.com 覆盖所有子域名,如果您仅保护单个域名(即 shadowarcanist.com),请将其排除。

  1. 保存配置

添加多个证书

如果您想添加多个证书和密钥,可以按以下方式操作:

*.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 记录:

  1. 在 Cloudflare 仪表板中,进入 DNS
  2. 选择 Records(记录)
  3. 添加 2 条 A 记录:
  4. 名称分别输入为 shadowarcanist.com*
  5. 将服务器的 IP 地址 作为两条记录的内容。
  6. 将两条记录的代理状态设置为 Proxied(已代理)

注意

为两条 A 记录 shadowarcanist.com* 启用“Proxied(橙色云朵)”选项,将通过通配符代理根域名和所有一级子域名。

如果您仅需对特定域名进行代理(或防护 DDoS),则无需此操作。在这种情况下,只需为您需要保护的域名启用代理即可。

3. 设置 TLS 加密

要使 Cloudflare 在连接您的服务器时使用更严格的加密,请在 Cloudflare 中配置 TLS 加密:

  1. 在 Cloudflare 中进入 SSL/TLS
  2. 选择 Overview(概览)
  3. 点击 Configure(配置) 按钮
  1. 加密模式选择 Full (Strict)(完全(严格))
  2. 点击 Save(保存) 按钮

4. 设置始终使用 HTTPS

要使 Cloudflare 自动将 HTTP 请求重定向到 HTTPS,请在 Cloudflare 中配置重定向:

  1. 在 Cloudflare 中进入 SSL/TLS
  2. 选择 Edge Certificates(边缘证书)
  3. 启用 Always Use HTTPS(始终使用 HTTPS)

5. 配置防火墙

注意

此步骤完全可选,但建议执行。

配置您的防火墙,仅允许来自 Cloudflare IP 段 ↗ 的端口 443 入站流量。

除 SSH 端口外,阻止所有其他入站流量。

这可以防止攻击者绕过 Cloudflare,直接通过 80 或 443 端口向您的服务器发起流量攻击。

现在设置完成!您的服务器已配置为使用源 TLS 证书,所有流量均通过 Cloudflare 网络进行代理,因此所有入站攻击(如 DDoS)都会在到达您的服务器之前被 Cloudflare 拦截。

On this page