Правила обработки запросов
В этой статье описан принцип работы сервиса Edge Logic Rules и его возможности.
Вы можете создавать и применять на Платформе правила для обработки запросов. В соответствии с этими правилами Платформа будет решать, предоставлять ли доступ к данным конечным пользователям, ограничивать его или нет. Также вы можете изменять заголовки запросов, перенаправлять запросы или менять политику кэширования.
Когда платформа обрабатывает запрос, она проверяет его на соответствие критериям, указанным в правилах обработки, которые входят в состав Набора правил.
Также вы можете создавать списки значений, содержащие IP-адреса, названия стран или текстовые строки. Эти списки можно применять в правилах для последующей обработки запросов.
Создавать Наборы правил и привязывать их к Сервисным конфигурациям можно в клиентском портале NGENIX Multidesk или с помощью NGENIX API. Для этого необходимо иметь в составе Аккаунта сервис Edge Logic Rules.
Наборы правил
Вы можете управлять Наборами правил в клиентском портале NGENIX Mutidesk на странице Наборы правил обработки запросов (раздел Обработка запросов в боковом меню настроек Аккаунта).
![](https://docs.ngenix.net/~gitbook/image?url=https%3A%2F%2F396255645-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FCAg6aH6hFOQ7XDMo9w8s%252Fuploads%252FULFg5ZMj3CRd7jariACp%252F%25D0%25A1%25D0%25BD%25D0%25B8%25D0%25BC%25D0%25BE%25D0%25BA%2520%25D1%258D%25D0%25BA%25D1%2580%25D0%25B0%25D0%25BD%25D0%25B0%25202023-12-04%2520%25D0%25B2%252016.57.59.png%3Falt%3Dmedia%26token%3D3647009d-b942-4b27-ba12-f0fd60ac5c56&width=768&dpr=4&quality=100&sign=c1e1e58a&sv=1)
Набор правил может содержать от 1 до 40 правил. Правила определяют критерии, при соблюдении которых будет выполнено одно или несколько действий.
Набор правил можно включить или выключить. В зависимости от этого обработка запросов по правилам данного Набора правил будет включена или отключена во всех Сервисных конфигурациях, к которым он привязан.
К одной Сервисной конфигурации можно привязать только один Набор правил, однако один и тот же Набор правил можно использовать для неограниченного количества Сервисных конфигураций.
Набор правил может находиться в двух состояниях: Используется или Не используется. Это зависит от того, привязан ли он хотя бы к одной Сервисной конфигурации.
![](https://docs.ngenix.net/~gitbook/image?url=https%3A%2F%2F396255645-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FCAg6aH6hFOQ7XDMo9w8s%252Fuploads%252FHlZeurmlR5LGqtauQviX%252F%25D0%25A1%25D0%25BD%25D0%25B8%25D0%25BC%25D0%25BE%25D0%25BA%2520%25D1%258D%25D0%25BA%25D1%2580%25D0%25B0%25D0%25BD%25D0%25B0%25202023-12-04%2520%25D0%25B2%252017.00.55.png%3Falt%3Dmedia%26token%3D7e5adacc-dad9-4dc3-99a5-bbccc7fa5a26&width=768&dpr=4&quality=100&sign=9b8f5300&sv=1)
В зависимости от содержания Набора правил Платформа автоматически присваивает ему категорию, которая влияет на стоимость проверки запросов, проходящих через этот Набор правил.
Категории наборов правилКаждый запрос обрабатывается правилами в Наборе правил последовательно, сверху вниз. Обработка запроса прекращается, если в каком-либо правиле выполняется терминирующее действие. Вы можете изменить порядок правил, переместив их в нужном порядке.
Правила
Каждое правило включает в себя критерии и действия. Действия выполняются только в том случае, если все критерии, описанные в правиле, выполнены.
Вы можете создавать копии правил и удалять их. Кроме того, у вас есть возможность отключить любое правило в Наборе правил.
Критерии (условия срабатывания правил)
В каждом критерии указывается поле, содержимое которого будет сравниваться с определённым значением при помощи оператора.
![](https://docs.ngenix.net/~gitbook/image?url=https%3A%2F%2F396255645-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FCAg6aH6hFOQ7XDMo9w8s%252Fuploads%252FXDzkqZ4ianJ6vRaxuFk2%252F%25D0%25A1%25D0%25BD%25D0%25B8%25D0%25BC%25D0%25BE%25D0%25BA%2520%25D1%258D%25D0%25BA%25D1%2580%25D0%25B0%25D0%25BD%25D0%25B0%25202023-12-04%2520%25D0%25B2%252017.06.40.png%3Falt%3Dmedia%26token%3D3bfb042a-3ca2-4c3f-a444-ab30c519dd8f&width=768&dpr=4&quality=100&sign=99e76359&sv=1)
Поля 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-префиксов и т.п.
Для некоторых типов Полей есть опция Учитывать регистр, по умолчанию она включена. При отключении этой опции (снятия галочки) регистр значений будет игнорироваться.
![](https://docs.ngenix.net/~gitbook/image?url=https%3A%2F%2F396255645-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FCAg6aH6hFOQ7XDMo9w8s%252Fuploads%252FLT9arULk8hpxzflrFdZR%252F%25D0%25A1%25D0%25BD%25D0%25B8%25D0%25BC%25D0%25BE%25D0%25BA%2520%25D1%258D%25D0%25BA%25D1%2580%25D0%25B0%25D0%25BD%25D0%25B0%25202023-12-04%2520%25D0%25B2%252017.04.47.png%3Falt%3Dmedia%26token%3D648fe7fa-9965-43c9-95c4-fae8eac8477d&width=768&dpr=4&quality=100&sign=fa56d186&sv=1)
Например, если правило срабатывает при указанном значении SomeString
, то при отключенном учете регистра оно также будет срабатывать для значений Somestring
, someString
и т.п.
Действия
Действия описывают, каким образом поступать с запросом, если для него выполнены все критерии в правиле.
![](https://docs.ngenix.net/~gitbook/image?url=https%3A%2F%2F396255645-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FCAg6aH6hFOQ7XDMo9w8s%252Fuploads%252FOmNTvqITADx7DGdWhVHb%252F%25D0%25A1%25D0%25BD%25D0%25B8%25D0%25BC%25D0%25BE%25D0%25BA%2520%25D1%258D%25D0%25BA%25D1%2580%25D0%25B0%25D0%25BD%25D0%25B0%25202023-12-04%2520%25D0%25B2%252017.06.18.png%3Falt%3Dmedia%26token%3D84fcfc69-161e-48f6-8f15-413a9cd5ffa5&width=768&dpr=4&quality=100&sign=19e6b45f&sv=1)
Доступны следующие действия:
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-хэша).
Вы можете использовать списки в критериях правил для тех или иных полей запроса.
![](https://docs.ngenix.net/~gitbook/image?url=https%3A%2F%2F396255645-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FCAg6aH6hFOQ7XDMo9w8s%252Fuploads%252F7ew943pKXt8w8gApL5mF%252F%25D0%25A1%25D0%25BD%25D0%25B8%25D0%25BC%25D0%25BE%25D0%25BA%2520%25D1%258D%25D0%25BA%25D1%2580%25D0%25B0%25D0%25BD%25D0%25B0%25202023-12-04%2520%25D0%25B2%252017.08.51.png%3Falt%3Dmedia%26token%3D816e9ceb-a2e6-4fe6-9d14-a7380df46bf2&width=768&dpr=4&quality=100&sign=1aaedf64&sv=1)
Например, вы можете создать список доверенных IPv4-адресов, которые будут иметь доступ к панели администратора. В дальнейшем такой список можно использовать в большом количестве критериев разных правил.
Опция Учитывать регистр также применима при использовании списков.
Технические ограничения
Для сервиса Edge Logic Rules действуют следующие технические ограничения:
Сущность | Ограничение |
Количество правил в наборе | 40 |
Количество критериев в правиле | 5 |
Количество действий в правиле | 5 |
Размер списка стран | 300 |
Размер списка строк | 300 |
Размер списка префиксов | 20000 |
Количество символов в значениях строк в списке | 255 |
Last updated