Привет, Дима! 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