Управление правилами обработки запросов
В рамках сервиса Edge Logic Rules вы можете создавать неограниченное количество наборов правил и привязывать их к сервисным конфигурациям. При обработке запроса Платформа будет проверять запросы на соответствие критериям в правилах обработки в составе набора правил. При составлении правил обработки вы можете использовать заранее созданные списки значений: IP-префиксы, страны, заголовки и т.п.

Вы можете управлять наборами правил на странице сервиса «Edge Logic Rules» клиентского портала NGENIX Multidesk.

Наборы правил
Набор правил содержит от одного до нескольких правил. В правилах описаны критерии, при выполнении которых будет применено одно или несколько действий.
Набор правил может быть включен или выключен. В зависимости от этого будет включена или выключена обработка запросов по правилам набора во всех сервисных конфигурациях, к которым привязан данный набор.
К сервисной конфигурации можно привязать только один набор правил. При этом один и тот же набор правил может быть привязан к неограниченному количеству сервисных конфигураций.
Статус набора может быть либо "используется" либо "не используется", в зависимости от того, привязан ли данный набор хотя бы к одной сервисной конфигурации или нет.

Набор правил
Существуют следующие категории:
- простой,
- расширенный,
- универсальный.
Каждый запрос проходит все правила в наборе последовательно, сверху вниз. Обработка запроса прекращается, если в каком-либо правиле выполняется терминирующее действие.
Вы можете изменить порядок правил, перемест ив их в нужном порядке.
Максимальное количество правил в одном наборе: 20.
Каждое правило состоит из критериев и действий. Действия применяются к запросу только в том случае, если выполняются все описанные в правиле критерии.
Вы можете копировать и удалять правила. Также любое правило в наборе может быть отключено.
В каждом критерии указывается Поле, содержимое которого будет сравниваться со Значением с помощью Оператора.

Критерии в правиле
Возможно указать следующие Поля HTTP-запроса пользователя:
- http.request.args.<argument_name> – аргумент запроса,
- http.request.headers.<header_name> – HTTP-заголовок,
- http.request.host – значение заголовка Host,
- http.request.js_challenge_ok – результат JavaScript-валидации пользователя (true или false),
- http.request.method – HTTP-метод (GET, HEAD, POST и т.п.),
- http.request.origin.host – хост из заголовка Origin.
- http.request.origin.scheme – схема из заголовка Origin,
- http.request.path – путь к ресурсу без схемы, хоста, порта и аргументов,
- http.request.port – порт (TCP),
- http.request.rawuri – URI запроса,
- http.request.referer.host – хост из заголовка Referer,
- http.request.referer.scheme – схема из заголовка Referer,
- http.request.scheme – схема (http или https),
- http.version – версия протокола HTTP (HTTP/1.0, HTTP/1.1, HTTP/2.0 и т.п.),
- ip.addr – IP-адрес,
- ip.asn – номер автономной системы (AS),
- ip.geoip.country – страна,
- ip.network_type – принадлежность адреса к сетям хост инг-провайдеров,
- ip.proxy_type – принадлежность адреса к сетям провайдеров сервисов VPN, Proxy, Tor,
- tls.ngx_fingerprint_hash – значение TLS-fingerprint хэша,
- tls.version – версия протокола TLS (TLSv1, TLSv1.1, TLSv1.2, TLSv1.3).
Например, чтобы создать критерий для User-Agent необходимо в Поле указать:
http.request.headers.user-agent
Значение в "Поле" необходимо указывать в нижнем регистре.
Максимальное количество критериев в одном правиле: 5.
Можно выбрать следующие операторы сравнения, в зависимости от выбранного поля:
- true – всегда верно,
- equals – равно единственному Значению,
- in – равно хотя бы одному из перечисленных Значений,
- contains – содержится в любом из перечисленных Значений,
- begins – начинается с любого из перечисленных Значений,
- ends – заканчивается на любое из перечисленных Значений,
- exists – присутствует.
Опционально вы можете выбрать модификатор запроса
NOT
. В этом случае оператор сравнения инвертируется.В правиле могут отсутствовать критерии. В этом случае действие будет выполняться для любого запроса.
Вы можете использовать список значений при создании критерия. Например, список стран, IP-префиксов и т.п.
Для некоторых типов Полей есть опция "Учитывать регистр", по умолчанию она включена. При отключении этой опции (снятия галочки) регистр значений будет игнорироваться.

Опция учета регистра
Например, если правило срабатывает при указанном значении "SomeString", то при отключенном учете регистра оно также будет срабатывать для значений "Somestring", "someString" и т.п.
Действия описывают, каким образом поступать с запросом, если для него выполнены все критерии в правиле.

Действия в правиле
Доступны следующие действия:
- allow – пропустить запрос,
- deny – заблокировать запрос,
- redirect – перенаправить запрос (3xx Redirect),
- setHeader – установить(заменить) заголовок запроса,
- delHeader – удалить заголовок запроса,
- jsChallenge – произвести JavaScript-валидацию пользователя.
Действия allow, deny, redirect и jsChallenge являются терминирующими. Это означает, что после выполнения такого действия дальнейшая обработка запроса по следующим правилам прекращается.
Для действия deny также возможно указать текст сообщения для страницы-заглушки. Текст сообщений по умолчанию: "Доступ к сайту време нно ограничен владельцем веб-ресурса".
Для некоторых действий есть возможность указать дополнительные параметры.
Действие | Параметры |
allow | отсутствуют |
deny | HTTP-статус код от 400 до 599, информационный текст для страницы-заглушки |
redirect | HTTP-статус код (301, 302, 303, 307, 308) |
delHeader | имя заголовка |
setHeader | имя заголовка, содержимое заголовка |
jsChallenge | TTL проверочных cookie (в секундах) |
Для действий setHeader и delHeader имя заголовка должно быть описано в специальном формате:
http.request.headers.<header_name>
Например для заголовка User-Agent:
http.request.headers.user-agent
Списки значений необходимы для перечисления большого количества объектов, таких как:
- IPv4-адрес а,
- HTTP-методы,
- страны,
- строки,
- ASN (номера автономных систем),
- md5HashString (значения md5-хэша).
Вы можете использовать списки в критериях правил для тех или иных полей запроса.

Списки значений
Например, вы можете создать список доверенных IPv4-адресов, которые будут иметь доступ к панели администратора. В дальнейшем такой список можно использовать в большом количестве критериев разных правил.
Опция "Учитывать регистр" также применима при использовании списков.
Для сервиса Edge Logic Rules действуют следующие технические ограничения:
Сущность | Ограничение |
Количество правил в наборе | 20 |
Количество критериев в правиле | 5 |
Количество действий в правиле | 5 |
Размер списка стран | 300 |
Размер списка строк | 300 |
Размер списка префиксов | 20000 |
Количество символов в значениях строк в списке | 255 |