Re: Не срабатывает limit_conn и limit_req?

Ruslan Ermilov ru at nginx.com
Mon Mar 4 10:45:08 UTC 2013


On Mon, Mar 04, 2013 at 01:24:34PM +0400, denis wrote:
> 04.03.2013 11:24, Ruslan Ermilov пишет:
> > Обработка запросов в nginx происходит в разных фазах.
> > Директивы модуля ngx_http_rewrite_module (директива return в т.ч.)
> > срабатывают на более ранних фазах, чем модули ngx_http_limit_*.
> >
> > Описанное выше поведение ожидаемо.
> А как тогда быть? try_files?

Как вариант, можно определить отдельный URI для 302, который
будет представлен статическим файлом, и задать желаемое ограничение
 там:

http {
    limit_req_zone $server_name zone=lreq:10m rate=1r/m;

    server {
        server_name test;

        location = /redir.php {
            error_page 302 /302.html;
            return http://ext-site.ru/content;
        }

        location = /302.html {
            internal;
            limit_req zone=lreq burst=1;
        }
    }
}

(Что положить внутрь файла 302.html - дело вкуса.)



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