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

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

Вы можете создавать и применять на Платформе правила для обработки запросов. В соответствии с этими правилами Платформа будет решать, предоставлять ли доступ к данным конечным пользователям, ограничивать его или нет. Также вы можете изменять заголовки запросов, перенаправлять запросы или менять политику кэширования.

Когда платформа обрабатывает запрос, она проверяет его на соответствие критериям, указанным в правилах обработки, которые входят в состав Набора правил.

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

Создавать Наборы правил и привязывать их к Сервисным конфигурациям можно в клиентском портале NGENIX Multidesk или с помощью NGENIX API. Для этого необходимо иметь в составе Аккаунта сервис Edge Logic Rules.

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

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

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

Набор правил может содержать от 1 до 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-адресов, которые будут иметь доступ к панели администратора. В дальнейшем такой список можно использовать в большом количестве критериев разных правил.

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

Управление списками в правилах обработки запросов

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

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

Сущность

Ограничение

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

40

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

5

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

5

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

300

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

300

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

20000

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

255

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

Last updated