Re: map и limit req
Ruslan Ermilov
ru at nginx.com
Thu Mar 21 06:25:19 UTC 2013
On Wed, Mar 20, 2013 at 06:38:17PM -0400, sergey_s wrote:
> странные вилы, либо я что-то опять не понимаю, если прописано
>
> http {
> ..............
> map $http_user_agent $var {
> default "";
> }
>
> limit_req_zone $var zone=limit:10m rate=10r/m;
>
> limit_req_zone $binary_remote_addr zone=testzone:10m rate=10r/m;
> limit_req zone=testzone burst=1;
> }
>
> server {
> ...
> limit_req zone=limit burst=1
> }
>
> зона testzone не срабатывает
> а если убрать строку
> limit_req zone=limit burst=1
> из блока server и прописать ее в http
>
> http {
> .......
> map $http_user_agent $var {
> default "";
> }
>
> limit_req_zone $var zone=limit:10m rate=10r/m;
> limit_req zone=limit burst=1
>
> limit_req_zone $binary_remote_addr zone=testzone:10m rate=10r/m;
> limit_req zone=testzone burst=1;
> ......
> }
>
> то начинает работать
> никто не сталкивался с такой странностью ?
Это не странность. Так устроено наследование директив в
nginx. limit_req на уровне server{} отменяет limit_req
на уровне http{}. Если вам нужно одновременно несколько
limit_req (поддерживается начиная с версии nginx 1.1.14),
их следует указывать на одном уровне.
Подробная информация о списке рассылки nginx-ru