news 2026/7/2 5:33:37

开源域名代理与流量限制方案 - Cloudflare + Ingress + 自签名证书

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
开源域名代理与流量限制方案 - Cloudflare + Ingress + 自签名证书

目录

一. Cert Manager的局限性

1.HTTP验证问题

2.DNS验证问题

3.缺乏额外防护

二. Cloudflare免费模式下的优势

1.免费的CDN与DNS

2.免费的SSL证书

3.免费的WAF与流量限制

三. 解决方案概览

1.域名代理

2.HTTPS加密

3.流量控制

四.配置示例

1.配置DNS和网络安全组

2.创建Cloudflare源证书

3.配置Ingress使用新的secret

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

5.启用HTTP重定向HTTPS

6.配置访问速率限制

五.验证


一. Cert Manager的局限性

我们在开源域名证书工具 - 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" ##注释/删除cert-manager引用 spec: ingressClassName: nginx tls: - hosts: - drone.fzwtest.xyz secretName: cloudflare-origin-tls ##改用我们新创建的secret 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秒钟。

五.验证

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

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

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

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

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

5.等待10秒后解除拦截:

其他子域名只需要修改对应的Kubernetes Ingress即可,非常简单高效(感谢Cloudflare提供的Free套餐)。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/28 23:59:45

当9.9元体验课变成万元陷阱:测试工程师的认知税惨痛实录

"学完自动化测试课程薪资翻倍!"——某机构广告承诺与学员实际就业率反差超60% 一、测试行业三大收割套路:你的焦虑正在被精准定价 低价钩子高价沉没 9.9元Selenium速成课引流,两周后推送"限时优惠"的万元全栈课。某学员…

作者头像 李华
网站建设 2026/7/2 0:19:42

Pytest Fixture 作用域与接口测试 Token 污染问题实战解析

引言 在做接口自动化测试时,你可能遇到过这样的情况:单独运行某个用例一切正常,但批量跑测试时,大量接口返回 401 或权限错误。这通常是 fixture 生命周期与共享状态导致的问题。本文结合实际场景,带你深入理解 Pytest…

作者头像 李华
网站建设 2026/7/2 0:18:52

【deepseek】多任务调度详解

RT-Thread 多任务调度详解 📊 调度器架构 RT-Thread 采用基于优先级的抢占式调度,支持时间片轮转: 1. 任务状态 // 任务状态定义 RT_THREAD_INIT // 初始状态 RT_THREAD_READY // 就绪状态 RT_THREAD_RUNNING // 运…

作者头像 李华
网站建设 2026/7/1 19:56:26

如何设计Agentic AI的“引导式反馈”?提示工程架构师的5个技巧

如何设计Agentic AI的“引导式反馈”?提示工程架构师的5个实战技巧 一、引言:为什么你的Agent反馈总“踩坑”? 你有没有过这样的经历? 让Agent写一份产品推广方案,反馈“这个方案不够有冲击力”,结果它改出来的版本更平淡了; 让Agent处理客户投诉,反馈“回复要更友好…

作者头像 李华
网站建设 2026/7/2 0:17:10

基于Python+Django的框架的襄阳四方汽车检测站管理系统(源码+lw+部署文档+讲解等)

课题介绍本课题针对襄阳四方汽车检测站管理中存在的检测预约低效、车辆检测记录杂乱、检测人员排班不便、设备维护不及时、检测报告生成繁琐等痛点,设计并实现基于PythonDjango的襄阳四方汽车检测站管理系统。后端采用Python语言结合Django框架搭建高效稳定的服务架…

作者头像 李华
网站建设 2026/7/1 23:36:01

基于Python+Django的协同过滤算法在线教育平台的设计与实现(源码+lw+部署文档+讲解等)

课题介绍本课题针对在线教育平台中课程推荐同质化、用户找课效率低、学习需求与课程匹配度不足、学习体验不佳等痛点,设计并实现基于PythonDjango的协同过滤算法在线教育平台。后端采用Python语言结合Django框架搭建高效稳定的服务架构,整合ORM框架实现数…

作者头像 李华