Skip to content

为所有资源设置完整的 HTTPS/TLS

当通过 Cloudflare 在 Coolify 中进行资源隧道传输时,Cloudflare 通常会处理 HTTPS 和 TLS 终止,而 Coolify 会通过 HTTP 运行您的资源。

这种设置对大多数用户都有效,但有些用户可能会遇到 URL 不匹配的问题,特别是对于需要在 Coolify 上使用 HTTPS 来颁发 JWT 令牌或处理回调 URL 的应用程序。

本指南通过配置您的资源完全在 HTTPS 上运行来解决这个问题,绕过 Cloudflare 的 HTTPS 处理,确保您的应用程序使用安全连接正常运行。

适用人群

本指南适合以下用户:

设置要求

要遵循本指南,您需要:

  • 如先前指南所述的正常工作的 Cloudflare 隧道设置。
  • 在 Cloudflare 中配置的域,用于处理 HTTP 流量并将其重定向到 HTTPS。

开始前的准备

  • 如果您的 Coolify 实例与您想要配置的域在同一隧道上,请确保在开始这些步骤之前,您可以使用服务器 IP 和端口(例如 203.0.113.1:8000)访问 Coolify 仪表板。
  • 默认端口是 8000,但如果您已更改或禁用了它,请确保可以通过新端口访问 Coolify 仪表板,或者在服务器上重新启用端口 8000

重要部分快速链接:


示例数据

以下数据在本指南中用作示例。请在执行步骤时将其替换为您的实际数据:

  • 源服务器的 IPv4 地址:203.0.113.1
  • 域名:shadowarcanist.com
  • 用户名:shadowarcanist

1. 创建 Cloudflare 源证书

要创建您的 Cloudflare 源证书,请按照以下步骤操作:

  1. 在您的 Cloudflare 仪表板中,转到 SSL/TLS
  2. 选择 源服务器
  3. 点击 创建证书 按钮。

系统会要求您选择私钥类型、主机名和证书有效期。

  1. 选择 RSA (2048) 作为密钥类型。
  2. 添加您希望证书覆盖的主机名。

注意!

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

在 Cloudflare 的免费计划中,通配符证书仅覆盖一个级别的子域

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

要覆盖多个级别,您需要购买 高级证书管理器 ↗

  1. 将证书有效期设置为 15 年

您的证书现在将生成。

  1. 选择 PEM 作为密钥格式。
  2. 复制您的 证书
  3. 复制您的 私钥

接下来,您将把这些添加到运行 Coolify 的服务器上,并配置 Coolify 使用此证书。

2. 将源证书添加到服务器

通过 SSH 登录到您的服务器或使用 Coolify 的终端功能。在本指南中,我使用的是 SSH:

sh
ssh shadowarcanist@203.0.113.1

登录后,导航到 Coolify 代理目录:

sh
cd /data/coolify/proxy

检查您是否有 certs 文件夹:

sh
ls
> acme.json  docker-compose.yml  dynamic

如果没有 certs 文件夹,请创建它:

sh
mkdir certs

验证它已创建:

sh
ls
> acme.json  certs docker-compose.yml  dynamic

现在,导航到 certs 目录:

sh
cd certs

创建两个新文件用于存储证书和私钥:

sh
touch shadowarcanist.cert shadowarcanist.key

验证文件已创建:

sh
ls
> shadowarcanist.cert shadowarcanist.key

打开 shadowarcanist.cert 文件并粘贴来自 Cloudflare 仪表板的证书:

sh
nano shadowarcanist.cert

粘贴证书后保存并退出。

shadowarcanist.key 文件执行相同操作并粘贴私钥:

sh
nano shadowarcanist.key

保存并退出。

现在源证书已安装在您的服务器上。

3. 配置 Coolify 使用源证书

现在,在您的 Coolify 仪表板中:

  1. 在侧边栏中转到 服务器 部分。
  2. 选择 代理
  3. 打开 动态配置 页面
  4. 点击 添加 按钮

现在您将被提示输入动态配置。

  1. 为您的配置选择一个名称。
  2. 在配置字段中输入以下详细信息:
yaml
tls:
  certificates:
    -
      certFile: /traefik/certs/shadowarcanist.cert
      keyFile: /traefik/certs/shadowarcanist.key
添加多个证书(点击查看)
yaml
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. 保存配置

从现在开始,Coolify 将为匹配主机名的请求使用源证书。

4. 在 Cloudflare 上设置加密模式

要在 Cloudflare 上设置加密,请按照以下步骤操作:

  1. 在 Cloudflare 中转到 SSL/TLS
  2. 选择 概览
  3. 点击 配置 按钮

选择 完全(严格) 作为加密模式。

5. 配置隧道使用 HTTPS

要配置隧道使用 HTTPS,请按照以下步骤操作:

  1. 点击三点图标打开设置菜单。
  2. 选择 编辑 以允许修改主机名。

接下来,按如下方式更新主机名:

  1. 将类型从 HTTP 更改为 HTTPS
  2. 将端口从 80 更改为 443
  1. 点击 其他应用程序设置
  2. 选择 TLS
  3. 源服务器名称 字段中输入您的根域名。
  4. 向下滚动并点击 保存主机名 按钮。

6. 配置 Cloudflare 始终使用 HTTPS

  1. 在 Cloudflare 仪表板中,转到 SSL/TLS
  2. 选择 边缘证书
  3. 启用 始终使用 HTTPS

7. 将 URL 从 HTTP 更新为 HTTPS

现在,在 Coolify 中将所有 URL 从 HTTP 更新为 HTTPS,包括资源和设置页面上的实例域。


恭喜! 您的所有资源现在始终在 HTTPS 上运行。