Правила обработки запросов

В этой статье описан принцип работы сервиса Edge Logic Rules и его возможности.

Общий принцип

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

Наборы правил

Вы можете управлять наборами правил на странице "Наборы правил обработки запросов", раздела "Обработка запросов", бокового меню настроек уровня Аккаунта, клиентского портала NGENIX Multidesk.

Набор правил содержит от одного до нескольких правил. В правилах описаны критерии, при выполнении которых будет применено одно или несколько действий.

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

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

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

Категория набора правил

Существуют следующие категории:

  • простой,

  • расширенный,

  • универсальный.

pageКатегории наборов правил и тарификация

Порядок обработки правил в наборе

Каждый запрос проходит все правила в наборе последовательно, сверху вниз. Обработка запроса прекращается, если в каком-либо правиле выполняется терминирующее действие.

Вы можете изменить порядок правил, переместив их в нужном порядке.

Максимальное количество правил в одном наборе: 40.

Правила

Каждое правило состоит из критериев и действий. Действия применяются к запросу только в том случае, если выполняются все описанные в правиле критерии.

Вы можете копировать и удалять правила. Также любое правило в наборе может быть отключено.

Критерии (условия срабатывания правил)

В каждом критерии указывается Поле, содержимое которого будет сравниваться со Значением с помощью Оператора.

Поля 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

Заголовки x-real-ip и x-forwarded-for не могут быть использованы в условиях правил сервиса Edge Logic Rules, так как проставляются Платформой.

Использование переменных в правилах

При выборе действий redirect и setHeader имеется возможность использовать переменные, что позволяет учитывать изменяющиеся значения исходного запроса. Например:

  • При необходимости перенаправления запроса на другой домен (example.com) можно использовать действие redirect на адрес example.com${http.request.rawuri} где ${http.request.rawuri} - переменная со значением исходного пути запроса пользователя, включающая аргументы запроса.

  • При необходимости добавления заголовка, содержащего в себе информацию об автономной сети, из которой он пришел на Платформу, можно использовать действие setHeader и в качестве значения добавляемого кастомного заголовка указать переменную ${ip.asn}.

Для использования переменных в поле ввода наберите ${, выберите переменную из выпадающего списка и закройте скобки ( символом "}"). Список доступных переменных идентичен полям HTTP-запросов указанным в Поля HTTP-запроса пользователя.

Списки значений

Списки значений необходимы для перечисления большого количества объектов, таких как:

  • IPv4-адреса,

  • HTTP-методы,

  • страны,

  • строки,

  • ASN (номера автономных систем),

  • md5HashString (значения md5-хэша).

Вы можете использовать списки в критериях правил для тех или иных полей запроса.

Например, вы можете создать список доверенных IPv4-адресов, которые будут иметь доступ к панели администратора. В дальнейшем такой список можно использовать в большом количестве критериев разных правил.

Опция "Учитывать регистр" также применима при использовании списков.

pageСписки

Технические ограничения

Для сервиса Edge Logic Rules действуют следующие технические ограничения:

Сущность

Ограничение

Количество правил в наборе

40

Количество критериев в правиле

5

Количество действий в правиле

5

Размер списка стран

300

Размер списка строк

300

Размер списка префиксов

20000

Количество символов в значениях строк в списке

255

pageСтатистика и аналитика

Last updated