Как правильно совместить limit_req и ограничение по IP?

Виктор Вислобоков corochoone на gmail.com
Сб Окт 10 21:08:10 UTC 2015


Есть некий список адресов. Для этого списка необходимо отдавать страницы
без ограничений, для всех остальных нужно сделать ограничение limit_req.
Непонятно как это правильно сделать с учётом того, что limit_req внутри if
не работает.

На одном из форумов предлагается такое решение:

    geo $nolimit {
        default 0;
        10.0.0.0/24 1;
        192.168.0.0/24 1;
    }
    limit_req_zone $binary_remote_addr zone=ratezone:10m rate=5r/s;

    server {
        ...

        location / {
            error_page 418 = @nolimit;

            if ($limit) {
                return 418;
            }

            limit_req zone=ratezone burst=10 nodelay;

            # ...
        }

        location @nolimit {
            # ... no limit_req here
        }
    }

но насколько это  правильно, делать такое перенаправление? Есть ли какие-то
другие способы?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20151011/8d732bf2/attachment.html>


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