중복 요청을 방지하기 위해 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있습니다. NGINX를 넣으면 2r/s500밀리초마다 1개의 요청이 허용됩니다.

관련 정보