【发布时间】:2018-06-26 02:10:18
【问题描述】:
所以实际上我使用 nginx 来反向代理(和负载平衡)一些带有 nginx 的 API 后端服务器,并且我使用指令 limit_req_zone 来限制每个 IP 和 URI 的最大请求数。没问题。
最终我们可能需要扩展并添加更多的 nginx 实例。每个 nginx 实例都使用“共享内存区域”来临时保存(我猜是在缓存中)每个请求,这样它就可以根据上面提到的limit_req_zone 正确检查请求是否通过。话虽如此,如果多个 nginx 同时运行,nginx 是如何处理的呢?
例如:
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
这告诉 nginx 每秒只允许来自同一 IP 地址的 1 个请求,但是如果第二个请求(在同一秒内)到达另一个 nginx 实例呢?据我了解,它会通过,因为他们不共享存储缓存的共享内存,我猜。
我一直在尝试对此进行一些研究,但找不到任何东西。任何帮助将不胜感激。
【问题讨论】:
标签: nginx load-balancing reverse-proxy