跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Shell / Bash

Cloudflare + Ingress + 自签名证书实现域名代理与流量限制

综述由AI生成Cert Manager 在 HTTP/DNS 验证及防护功能上的局限,提出采用 Cloudflare 免费套餐配合 Kubernetes Ingress 与自签名证书的解决方案。通过配置 DNS、安全组、源证书及 Ingress Secret,实现了 HTTPS 加密、IP 隐藏、访问速率限制及地区访问控制,有效提升了测试环境的安全性与流量管理能力。

GopherDev发布于 2026/3/30更新于 2026/5/2233 浏览
Cloudflare + Ingress + 自签名证书实现域名代理与流量限制

一. Cert Manager 的局限性

我们在之前的文章中演示了 Cert Manager 自动签发和管理 TLS 证书的过程,但在实践中会遇到一些问题:

1.HTTP 验证问题

cert-manager 默认使用 HTTP-01 验证时,需要暴露服务器或负载均衡的 80 端口给互联网。如果环境比较敏感,或者不想对外暴露服务,这会带来极大的安全隐患。

2.DNS 验证问题

采用 DNS-01 验证虽然只需要有 DNS 的 API 修改权限,但是对于没有公网 DNS 控制权的用户来说非常麻烦,并且无法保证安全性,需要额外的审计手段。

3.缺乏额外防护

虽然 cert manager 可以完成证书自动化,但它本身不提供 CDN、WAF、流量限制等功能,即便对于个人测试环境也显得很单薄。

所以,如果只需要快速实现 HTTPS 并配合一些流量管理,cert manager 并非最优选择。

二. Cloudflare 免费模式下的优势

针对个人测试环境等,Cloudflare 的免费套餐已经提供了很多的基础实用功能。

文章配图

1.免费的 CDN 与 DNS

提供最基本的 CDN 缓存与 DNS 服务器功能。

2.免费的 SSL 证书

提供免费通用的 SSL/TLS 证书保护我们的站点(类似 AWS Certificate Manager),并且支持 Cloudflare 站点到我们业务站点之间通过自签名证书做 TLS 加密。

3.免费的 WAF 与流量限制

即使免费模式,也能设置 IP 访问限制、速率限制、防爬虫等规则,弥补了 cert manager 等工具的不足。

三. 解决方案概览

我们通过 Cloudflare + Kubernetes Ingress + 自签名证书构建一个测试环境,实现:

1.域名代理

外部访问经过 Cloudflare,再由 Ingress 转发到后端服务;隐藏我们业务服务器的 IP 地址。

2.HTTPS 加密

由 Cloudflare 提供 SSL/TLS 终端,供给浏览器访问域名使用;Cloudflare 和 Ingress 之间使用自签名证书加密流量。

3.流量控制

通过 Cloudflare 页面设置简单的 IP 访问限制和速率限制。

四.配置示例

1.配置 DNS 和网络安全组

首先我们查看 Cloudflare 名称服务器:

文章配图

然后把域名的 DNS 服务器修改为 Cloudflare 指定的服务器(这里以阿里云购买的域名为例):

文章配图

配置生效要等待一段时间,我们可以同时配置 DNS 记录:

文章配图

个人测试环境没有创建负载均衡(使用云厂商的负载均衡会产生额外的费用),直接 A 记录指向了 Kubernetes Ingress 所在的服务器地址。

在服务器对应的网络安全组删除所有 0.0.0.0/0 的入站规则,只配置 Cloudflare 出口地址:

文章配图

2.创建 Cloudflare 源证书

Cloudflare 和源服务器之间的 TLS 证书,可以用 openssl 等工具生成。

这里我们使用最简单的方式,让 Cloudflare 帮我们生成:

文章配图

文章配图

文章配图

下载证书到服务器中,然后创建 secret:

kubectl -n drone create secret tls cloudflare-origin-tls --cert=origin.crt --key=origin.key

kubectl -n drone get secret | grep cloud

cloudflare-origin-tls kubernetes.io/tls 2 22s

3.配置 Ingress 使用新的 secret

修改之前的 yaml 文件:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: drone-ingress
  namespace: drone
annotations:
  nginx.ingress.kubernetes.io/backend-protocol: "HTTP"
  nginx.ingress.kubernetes.io/ssl-redirect: "true"
  #cert-manager.io/cluster-issuer: "letsencrypt-prod"
spec:
  ingressClassName: nginx
  tls:
  - hosts:
    - drone.fzwtest.xyz
    secretName: cloudflare-origin-tls
  rules:
  - host: drone.fzwtest.xyz
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: drone-server
            port:
              number: 80

执行部署:

kubectl apply -f drone-ingress.yaml

4.配置 Cloudflare 的 SSL/TLS 加密模式

文章配图

文章配图

5.启用 HTTP 重定向 HTTPS

文章配图

6.配置访问速率限制

这里设置一个最简单的规则:同一个 IP 来源对域名的访问每 10 秒钟最多 10 次,超过限制后阻止它的访问请求 10 秒钟。

文章配图

文章配图

7.配置国家地区访问限制

我们对互联网开放任何网站,运行一段时间后,总会发现来自国外地区 IP 的攻击行为,如下图所示的恶意扫描和流量消耗:

文章配图

由于我们是个人测试演示的网站,直接简单的禁止国外地区访问即可:

文章配图

五.验证

现在访问 http://drone.fzwtest.xyz(前面的文章我们用 Cert Manager 代理过的域名)。验证是否达到预期。

  1. Cloudflare 拦截了请求,并返回 301 跳转 https 给客户端;

  2. 客户端看到的 Server 地址是 Cloudflare 的地址,隐藏了真实的服务器地址;

文章配图

  1. 显示受信任的 Cloudflare 边缘证书;

文章配图

  1. 多次快速刷新页面,出现访问频率限制;

文章配图

等待 10 秒后解除拦截:

文章配图

  1. 国外 IP 访问我们的网站直接被阻止:

文章配图

其他子域名只需要修改对应的 Kubernetes Ingress 即可,非常简单高效。

目录

  1. 一. Cert Manager 的局限性
  2. 1.HTTP 验证问题
  3. 2.DNS 验证问题
  4. 3.缺乏额外防护
  5. 二. Cloudflare 免费模式下的优势
  6. 1.免费的 CDN 与 DNS
  7. 2.免费的 SSL 证书
  8. 3.免费的 WAF 与流量限制
  9. 三. 解决方案概览
  10. 1.域名代理
  11. 2.HTTPS 加密
  12. 3.流量控制
  13. 四.配置示例
  14. 1.配置 DNS 和网络安全组
  15. 2.创建 Cloudflare 源证书
  16. 3.配置 Ingress 使用新的 secret
  17. 4.配置 Cloudflare 的 SSL/TLS 加密模式
  18. 5.启用 HTTP 重定向 HTTPS
  19. 6.配置访问速率限制
  20. 7.配置国家地区访问限制
  21. 五.验证
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • GitHub 多人协作开发教程
  • Dify 工作流发布为 MCP Server 实战:第三方工具无缝对接
  • 无线联邦学习:在保护隐私的无线网络中,让 AI 协同进化
  • 基于 Rokid AR 眼镜的聚会游戏助手开发实战
  • Spring Boot 数据访问与数据库集成实战
  • VoxCPM-1.5-TTS-WEB-UI 低延迟高音质语音生成方案
  • Dify 工作流发布为 MCP Server 实战指南
  • 2024-2025 旗舰 LLM 架构演进:MoE 稀疏革命与 KV-cache 优化设计
  • LLaMA 3.1 模型部署与实战:构建智能聊天机器人
  • 知网AIGC检测怎么过?2026最新降AI率全流程攻略
  • 大模型技术系统学习书单推荐:从理论到实践
  • Dify 工作流发布为 MCP Server 实战指南
  • 中国大模型落地应用案例集(医疗、教育、金融等 52 个领域)
  • 本地部署 Kimi K2 模型:llama.cpp、vLLM 与 Docker 方案
  • SBUS 协议详解:从原理、硬件接口到 STM32 代码实现
  • Python 学习路径:从基础语法到机器学习实战指南
  • Visual Studio C++ 项目添加现有项避坑指南
  • 无线联邦学习:保护隐私的无线网络中 AI 协同进化
  • LeRobot深度解析:5大核心模块构建下一代机器人学习系统
  • JVM 运行时数据区域详解

相关免费在线工具

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

  • JSON美化和格式化

    将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online