我如何保护我的快递 API 从垃圾邮件和高AI成本使用Redis

2026年8月9日1 次浏览来源:Dev.to阅读原文

当我建立我的后端API时,我意识到一个大问题:任何人都可以吐出我的终点.

如果用户再三重新装入一页或点击一个端点呼叫外部AI服务,可以崩溃服务器或运行高额API成本.

为了解决这个问题,我加入了限制利率。

这就是为什么我用雷迪斯来做它, 和如何设置它。

简单的记忆限制器问题 一开始,我考虑在一个简单的 JavaScript 对象中保存请求数: 这在当地有效,但有两个大缺陷:1)记忆漏: 请求对象在记忆中持续地增长. 2) 缩放时断层:如果在负载平衡器后部署多例您的应用程序,每个服务器都会保留自己的计数.

用户可以通过点击不同的服务器来轻松地绕过限制.

解决方案(The Solutions: Centralized Redis Store Redis)将数据存储在我们的Node.js应用程序外的RAM中.

由于它是集中的,所有服务器实例都共享完全相同的计数.

我如何配置 在我的计划里 我使用两种保护方式: 全球限制:正常路线每15分钟100个请求。

严格限制:重道(如AI生成或OTP电子邮件)每10分钟5个请求.

我学到了什么 1) 早点停止请求 : 阻断中间软件层的不良流量 节省数据库读取和服务器 CPU 循环 。 2) Redis是快的:在Redis中检查限制需要少于1ms. 3) 记得信任代理:如果在Render上或Nginx后方托管,则在Express中添加app.set('trust 代理', 1),这样它就可以读取用户的真实IP而不是负载平衡器IP.

GitHub:https://github.com/nikhilsingh2764/invoice-Genrator: 活API:https://invoice-backend-drqr.onrender.com/ QQ Postman Collection:(https://www.postman.com/technical-physicist-35686083-s-team/invoice-generator-api/collection 39798617-83cff721-5ce7-4e00-ba58-0d49017d339?

行动=share&creator=39798617) 互联网档案馆 互联网档案馆 互联网档案馆的存檔,存档日期:2014年12月31日,存檔,存档日期:2007年12月23日,存檔,存档日期:

分享