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