我正在使用 Nginx 代理作为 Web 应用程序的前端,该应用程序往往会在几毫秒内收到相同的重复请求,从而导致数据库中出现重复的项目。
我觉得我可以通过让 Nginx 缓存内容 1 秒来解决这个问题,这样重复的请求就不会到达我的应用程序
我配置了它
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=prevent_duplicates:10m max_size=1g inactive=1s use_temp_path=off;
然后添加proxy_cache prevent_duplicates;
到我的根位置部分,其中我有 proxy_pass
但我的应用程序无论如何都会收到所有请求 - 这是时间问题吗?多个线程同时启动,每个请求都以为自己是第一个?
答案1
也许速率限制可以解决这个问题?
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s;
server {
location /login/ {
limit_req zone=mylimit;
proxy_pass http://my_upstream;
}
}
来源:https://www.nginx.com/blog/rate-limiting-nginx/
可以rate=1r/s
进行调整,如果你把2r/s
NGINX 将允许每 500 毫秒 1 个请求...