¿Utiliza un caché de proxy Nginx para evitar solicitudes duplicadas?

¿Utiliza un caché de proxy Nginx para evitar solicitudes duplicadas?

Estoy usando un proxy Nginx como interfaz para una aplicación web que tiende a recibir solicitudes duplicadas idénticas con milisegundos de diferencia, lo que genera elementos duplicados en mi base de datos.

Pensé que podría solucionar este problema permitiendo que Nginx almacene en caché el contenido durante 1 segundo, de modo que las solicitudes duplicadas no lleguen a mi aplicación en absoluto.

Lo configuré con

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=prevent_duplicates:10m max_size=1g inactive=1s use_temp_path=off;

Y luego lo agregué proxy_cache prevent_duplicates;a mi sección de ubicación raíz, donde tengo proxy_pass

Pero mi aplicación recibe todas las solicitudes de todos modos: ¿es una cuestión de tiempo? ¿Varios hilos comienzan todos a la vez para cada solicitud y todos piensan que son los primeros?

Respuesta1

¿Quizás la limitación de velocidad pueda ser la solución?

limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s;
 
server {
    location /login/ {
        limit_req zone=mylimit;
        
        proxy_pass http://my_upstream;
    }
}

Fuente:https://www.nginx.com/blog/rate-limiting-nginx/

Se rate=1r/spuede modificar, si pones 2r/sNGINX permitirá 1 solicitud cada 500 milisegundos...

información relacionada