Re: Ограничить location uri+агрументы через limit req

Maxim Dounin mdounin на mdounin.ru
Чт Ноя 4 12:49:03 MSK 2010


Hello!

On Thu, Nov 04, 2010 at 03:48:45AM -0400, igor.goncharenko wrote:

> Вот такой вариант заработал:
> 
>     location /
>     {
>       proxy_pass          http://test.loc;
>       error_page 418 = @limit;
>       if ($args ~* command=test_command&PHPSESSID=.*) { return 418; }
>     }
> 
>      location @limit {
>      limit_req zone=test1 burst=5 nodelay;
>      }

В location @limit тоже, очевидно, нужен proxy_pass.

> Вопрос: насколько правильно
> использовать несуществующую ошибку 418

Код 418 официально существует.

http://tools.ietf.org/html/rfc2324#section-2.3.2

> вместо 417, ведь в данной конфигурации
> эта ошибка никогда не отдается клиенту,
> а используется только для лимита
> скорости?

Можно использовать любой код ошибки, главное чтобы он не мог 
возникнуть в данном location'е по другим причинам.

> И все-таки, нет ли другого варианта, без
> именованных локейшнов?

Нет.  Точнее - можно ещё использовать обычные location'ы вместо 
именованных.  Но придётся применять дополнительные приседания для 
передачи правильного uri на бекенд.

Maxim Dounin



Подробная информация о списке рассылки nginx-ru