Валентин Бартенев
July 11, 2014 07:28PM
On Friday 11 July 2014 19:03:28 nNgzlTtv3k5lzmKRvlmS22tSl8sJr68k wrote:
> Возникла надобность использовать limit_req, но столкнулся с неприятным
> моментом работы ограничителя. В документации приводится пример:
>
> limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
>
> server {
> location /search/ {
> limit_req zone=one;
> }
> }
>
> который (за отсутствием исчерпывающего описания) наталкивает на мысль, что
> указанный limit_req будет ограничивать частоту прихода запросов GET
> /search/, однако на практике это не так.
> Счётчик, указанный директивой limit_req_zone, является глобальным для
> $binary_remote_addr и накручивается независимо от запроса. Из-за этого если
> в одну и ту же секунду от одного и того же IP пришёл какой-то запрос и
> запрос GET /search/, последний будет отклонён - сработает limit_req, хотя он
> был единственным search-ем за эту секунду.

Нет, учитываются только запросы пришедшие в location с limit_req.


>
> Попробовал на опыте - действительно работает не так, как ожидалось:
>
> http {
> limit_req_zone $binary_remote_addr zone=limited:10m rate=1r/s;
>
> server {
> listen 80 default_server;
> location / { return 404; }
> location /123 {
> root /tmp/zzz;
> limit_req zone=limited nodelay;
> }
> }
> }
>
>
> bash$ touch /tmp/zzz/123
>
> bash$ { curl -s -o /dev/null -D - localhost/123; curl -s -o /dev/null -D -
> localhost/123; } | fgrep HTTP
> HTTP/1.1 200 OK
> HTTP/1.1 503 Service Temporarily Unavailable
>
> bash$ { curl -s -o /dev/null -D - localhost/aaaaa; curl -s -o /dev/null -D -
> localhost/123; } | fgrep HTTP
> HTTP/1.1 404 Not Found
> HTTP/1.1 503 Service Temporarily Unavailable
[..]

Попробовал на 1.6.0 ваш пример с вашим конфигом:

% { curl -s -o /dev/null -D - localhost/aaaaa; curl -s -o /dev/null -D - localhost/123; } | fgrep HTTP
HTTP/1.1 404 Not Found
HTTP/1.1 200 OK

Что-то вы не так делаете.

--
Валентин Бартенев
_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

Не работает limit_req

nNgzlTtv3k5lzmKRvlmS22tSl8sJr68k July 11, 2014 07:03PM

Re: Не работает limit_req

nNgzlTtv3k5lzmKRvlmS22tSl8sJr68k July 11, 2014 07:11PM

Re: Не работает limit req

Валентин Бартенев July 11, 2014 07:28PM

Re: Не работает limit req

nNgzlTtv3k5lzmKRvlmS22tSl8sJr68k July 12, 2014 06:13AM

Re: Не работает limit req

Валентин Бартенев July 12, 2014 08:34AM

Re: Не работает limit req

nNgzlTtv3k5lzmKRvlmS22tSl8sJr68k July 13, 2014 08:41AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 232
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