Welcome! Log In Create A New Profile

Advanced

Re: rate limiter and rewrite together

November 08, 2017 03:00PM
Привет, Дима!

On Wed, Nov 08, 2017 at 08:26:24PM +0300, Dmitry Morozovsky wrote:
> Коллеги,
>
>
> что-то мы мальца сломали мозг и явно не видим очевидного.
>
> Есть ситуация, когда все транзитные HTTP запросы клиента перехватываются и
> отправляются в специальный nginx, котогрый показывает специальную страничку.
>
> Но -- хочется этот поток ограничить, ибо иначе nginx начинает жрать
> процессор как не в себя, потому что клиент-то тупой запросов шлёт гору.
>
> и -- не получается.
>
> текущий вариант был таков:
>
>
> http {
> include mime.types;
> default_type application/octet-stream;
> sendfile on;
> keepalive_timeout 65;
> error_log /var/log/nginx-error.log notice;
> proxy_buffering off;
>
> log_format rdr '[$time_local] $remote_addr [$http_host$request_uri] $server_name $server_port [$rdr] $status $body_bytes_sent';
> limit_req_log_level info;
> limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
>
> server {
> listen 127.0.0.1:8001;
> server_name localhost;
> access_log /var/log/nginx-access.log rdr;
> limit_req zone=one nodelay;
> limit_req_status 444;
> return 302 http://rinet.ru/nomoney/redirect.html?;
> }
> }
>
> не лимитит.
>
> чего мы не замечаем и где тупим? ;)

А не замечаете вы директивы return модуля rewrite, которая не даёт
работать в т.ч. limit_req'у (обработка запроса попросту до нужной
фазы не доходит). Как раз недавно обсуждали подобный юзкейс, ну
и лайфхак какой-то такой будет:

location / {
limit_req zone=one nodelay;
limit_req_status 444;
try_files /nonexistent @redirect;
}

location @redirect {
return 302 http://rinet.ru/nomoney/redirect.html?;
}

P.S. Знак вопроса в конце URI в return остался от rewrite'а, или
так и задумано?
_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

rate limiter and rewrite together

Dmitry Morozovsky November 08, 2017 12:28PM

Re: rate limiter and rewrite together

ru@nginx.com November 08, 2017 03:00PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 303
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready