我有:
- 在内部负载均衡器后面的 ECS 集群上运行的私有 API。此 API 供 VPC 内的其他服务使用。
- 一个公共的 Next.js Web 应用程序。
我需要的:
- 向 Next.js Web 应用授予私有 API 访问权限。来自此应用外部的互联网流量不得访问该 API。
- 防止机器人等滥用,只应允许真实的人类流量。
- 可能对原始客户端 IP 进行速率限制。
我正在考虑在 Next.js 服务器上结合使用反向代理配置,将 API 请求代理到内部负载均衡器,并在前端使用某种 Google recaptcha 来仅允许人工请求(但我对这里所述的 recaptcha 令牌 2 分钟的持续时间有些担忧https://developers.google.com/recaptcha/docs/verify)。对于速率限制要求,Next.js 代理配置中的 X-Forwarded-For 标头和内部平衡器上的 X-Forwarded-For 附加行为是否能解决问题?通过这种方式,私有 API 理论上应该能够提取原始客户端 IP 地址并进行速率限制。
您觉得如何?这可行吗?还有更好的主意吗?