
我使用 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 個請求...