Назад | Перейти на главную страницу

Исключить местоположение из ограничения скорости NGINX

у меня есть оба limit_req_zone и limit_req определен в блоке http nginx, поэтому он будет применяться ко всем блокам server и location.

Есть ли способ исключить определенное местоположение или блокировку сервера из этого ограничения?

nginx.conf:

http {
...
limit_req_zone $binary_remote_addr zone=main:10m rate=25r/s;
limit_req zone=main burst=100 nodelay;
limit_req_status 429;
...
}

myserver.conf:

server {
...
     location /web/ {
     directive_to_disable_ratelimit
     }
...
}

Единственное, что я мог придумать, - это установить неприлично высокий всплеск для местоположения или сервера, которые я хочу исключить. Таким образом, предел никогда не будет достигнут.

Этот конфиг должен работать:

http {
    limit_req_zone $binary_remote_addr zone=main:10m rate=25r/s;
    limit_req_status 429;
    
    server {
    ...
        location / {
            limit_req zone=main burst=100 nodelay;

            ... other location directives
        }

        location /web {
            ... other location directives
        }
    }
}

nginx location алгоритм выбора будет соответствовать первому блоку по всем запросам, кроме запросов, соответствующих /web.