Используете ли вы кэш прокси-сервера Nginx для предотвращения дублирования запросов?

Используете ли вы кэш прокси-сервера Nginx для предотвращения дублирования запросов?

Я использую прокси-сервер Nginx в качестве интерфейса для веб-приложения, которое имеет тенденцию получать идентичные дублирующие запросы с интервалом в миллисекунды, что приводит к появлению дублирующих элементов в моей базе данных.

Я подумал, что смогу исправить это, разрешив 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/sNGINX, то он будет разрешать 1 запрос каждые 500 миллисекунд...

Связанный контент