у меня есть оба 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
.