Тип сервиса MainProxy#
Экземпляр типа сервиса service_main_proxy позволяет агрегировать множество сервисов различных типов на одном объекте типа listen.
Агрегированные сервисы также будут наследовать настройки фильтрации, upstream и др. из сервиса типа service_main_proxy.
В контексте service объявляется тип сервиса, соответствующий service_main_proxy:
service:
service_main_proxy:
Каждый сервис представляет собой последовательность, включающую в себя следующие параметры:
Обязательные параметры:
idИдентификатор сервиса в контексте всего профиля. Используется, например, в названии директории и других системных файлов, хранящих информацию о сервисе.
Значение параметра id должно быть уникальным.
Идентификатор может быть строкой, числом, или их комбинацией. В качестве разделителя слов необходимо использовать знак нижнее подчеркивание « _ «.
Количество сервисов ограничено одним.
- id: 1 ...Тип параметра: текстовое значение.
listenПараметр
listenявляется обязательным только для сервиса типа service_main_proxy. Для сервисов иных типов параметр listen опционален.В случае, если параметр
listenне указан (имеется ввиду наличие данного параметра в сервисе типа service_main_proxy и отсутствие в сервисах иных типов), для взаимодействия между сервисами используются unix-сокеты.Последовательность, включающая в себя параметры, описанные в разделе Параметр listen.
Тип параметра: последовательность параметров и их значения.
hostnameВ значении параметра указывается виртуальное имя сервера.
hostname: - localhostТип параметра: последовательность строковых значений.
urlВ значении параметра определяется относительный url, на котором будет работать сервис. Есть возможность использовать регулярное выражение. Играет роль фильтра для входящих запросов.
url: /my_service_urlЗначение параметра
urlдолжно быть уникальным.Тип параметра: строковое значение.
upstream_groupsОписание группы серверов и параметров соединения с backend.
Последовательность, включающая в себя параметры, описанные в разделе Параметр upstream.
service_main_proxy: - id: 1 ... upstream_groups: - id: <id_value> ssl: <ssl_value> health_check: ... load_balancing: ... servers: ...Тип параметра: последовательность параметров и их значения.
Опциональные параметры:
nameТехнологическое название сервиса, используемое для идентификации сервиса в логах транзакций.
Значение параметра
nameдолжно быть уникальным.Обязательно в случае:
optional: event_hook: ...Тип параметра: строковое значение.
По умолчанию: значение задается пользователем.
descriptionПараметр предназначен для хранения строки с описанием сервиса.
Значение параметра
descriptionне является уникальным.Тип параметра: текстовое значение.
По умолчанию: значение задается пользователем.
use_upstream_groupsВкл./Откл. балансировки на уровне main сервиса.
Тип параметра: логическое значение:
true;
false.
По умолчанию:
use_upstream_groups: falseoptionalГруппа
optionalиспользуется в сервисе для:вызова различных таймаутов;
настройки сессии;
ограничения по размеру лимита тела запроса/ответа;
вызова различных утилит;
и др.
Группа, включающая в себя параметры, описанные в разделе MainProxy - optional.
Тип параметра: группа параметров и их значения.
По умолчанию: значения группы задаются пользователем.
filtersГруппа, включающая в себя следующие параметры:
фильтр modsecurity — позволяет проверить download/upload трафик на наличие угроз (например sql-injection), содержащихся в методе, header, теле и др.;
фильтр icap — позволяет проверить download/upload трафик на наличие вирусов. Проверка на вирусы осуществляется путем отправки вложения внешнему антивирусу.
Группа, включающая в себя параметры, описанные в разделе MainProxy - optional.
Группа параметров
filtersнаследуется всеми сервисами, указанными после сервиса service_main_proxy. Если в последующем сервисе определена директива filters, то происходит объединение правил этого сервиса и сервиса service_main_proxy.Тип параметра: группа параметров и их значения.
По умолчанию: значения группы задаются пользователем.
validatorsВалидация тела запроса/ответа.
Группа, включающая в себя параметры, описанные в разделе Валидация.
В качестве альтернативы использования механизмов
validation_jsonиvalidation_wsdl_xsdрекомендуется использовать действияJsonValidationиXsdValidationсоответственно.Тип параметра: группа параметров и их значения.
По умолчанию: значения группы задаются пользователем.
modifiersГруппа
modifiersпозволяет изменять содержимое заголовков запроса и ответа.Группа, включающая в себя параметры, описанные в разделе Параметр modifiers.
Тип параметра: группа параметров и их значения.
По умолчанию: значения группы задаются пользователем.
postprocessorsПостобработчик
postprocessor_errorпредназначен для формирования сообщения об ошибке для клиента по указанному шаблону.Группа, включающая в себя параметры, описанные в разделе Постобработчик postprocessor_error.
Группа параметров
postprocessorsнаследуется всеми сервисами, указанными после сервиса service_main_proxy. Если в последующем сервисе определена директива postprocessors, то она переопределит директиву, указанную в сервисе service_main_proxy.Тип параметра: группа параметров и их значения.
По умолчанию: значения группы задаются пользователем.
version: 2.0.3
profile_version: XXX
profile: uko_web
system:
wrk_count: 4
conn_count: 4096
service:
service_main_proxy:
- id: 1
listen:
- port: 8443
ssl:
certificate: server_dev.cer
certificate_key: server_dev.key
protocols:
- TLSv1.2
ciphers_str: "HIGH:!aNULL:NULL-SHA256"
session_cache:
type: "shared"
name: "TLS"
size: 20m
hostname:
- localhost
- 127.0.0.1
url: /
optional:
file_upload_limit: off
limit_req:
enabled: false
target: src_ip
rate: 1000
burst: 2000
status_code: 429
upstream_groups:
- id: upstream_groups_v1
server: '127.0.0.1:18091'
weight: '5'
postprocessors:
!include: postprocessor_error.yml
filters:
filter_mds:
config:
SecAuditLogParts: ABFHIJKZG
custom_rules:
- ufs_rules/rules.conf
service_http_proxy:
!include: **/services.yml
MаinProxy - optional#
Опциональные параметры:
log_levelВ значении параметра переопределения уровня логирования для сервиса.
Типа параметра:
debug;
info;
notice;
warn;
error;
crit;
alert;
off.
По умолчанию: Значение параметра наследуется от значения в system.
client_header_timeoutВ значении параметра указывается таймаут при чтении заголовка запроса клиента.
Типа параметра: текстовое значение с суффиксом:
ms — миллисекунда;
s — секунда;
m — минута;
h — час;
d — день;
w — неделя;
M — месяц (30 дней);
y — год (365 дней).
По умолчанию:
client_header_timeout: 60sclient_body_timeoutВ значении параметра указывается таймаут при чтении тела запроса клиента.
Типа параметра: текстовое значение с суффиксом:
ms — миллисекунда;
s — секунда;
m — минута;
h — час;
d — день;
w — неделя;
M — месяц (30 дней);
y — год (365 дней).
По умолчанию:
client_body_timeout: 60skeepalive_timeoutВ значении параметра указывается таймаут, в течение которого keep-alive соединение с клиентом не будет закрыто со стороны сервера.
Типа параметра: текстовое значение с суффиксом:
ms — миллисекунда;
s — секунда;
m — минута;
h — час;
d — день;
w — неделя;
M — месяц (30 дней);
y — год (365 дней).
По умолчанию:
keepalive_timeout: 75skeepalive_requestsВ значении параметра указывается максимальное число запросов, которые можно сделать по одному keep-alive соединению.
Типа параметра: целочисленное значение.
По умолчанию:
keepalive_requests: 10000send_timeout_to_clientВ значении параметра указывается таймаут при передаче ответа клиенту.
Таймаут устанавливается не на всю передачу ответа, а только между двумя операциями записями.
Если по истечении этого времени клиент ничего не примет, соединение будет закрыто.
Типа параметра: текстовое значение с суффиксом:
ms — миллисекунда;
s — секунда;
m — минута;
h — час;
d — день;
w — неделя;
M — месяц (30 дней);
y — год (365 дней).
По умолчанию:
send_timeout_to_client: 60ssessionВ значении параметра включается поддержка http сессии.
session_module(параметры: session, session_timeout, session_cookie_name, session_redirect_timeout, session_show) предоставляет собой функцию отслеживания http запросов - записывается информация о сеансе, устанавливая cookie в браузере клиента. Некоторые модули безопасности, такие как ip_behavior, основываются на данном модуле.Типа параметра: логическое значение:
on;
off.
По умолчанию:
session: offsession_timeoutВ значении параметра указывается таймаут сессии.
Типа параметра: целочисленное значение.
По умолчанию:
session_timeout: 60session_cookie_nameВ значении параметра указывается имя куки сессии.
Типа параметра: текстовое значение.
По умолчанию:
session_cookie_name: SENGINX-SESSION-IDsession_redirect_timeoutВ значении параметра устанавливается время ожидания после отправки SEnginx ответа перенаправления клиенту в секундах.
Значение в секундах. Значение не должно быть больше session_timeout.
Типа параметра: целочисленное значение.
По умолчанию:
session_redirect_timeout: 5session_showВ значении параметра определяется возможность просматривать информацию о текущих сессиях.
Типа параметра: логическое значение:
true;
false.
По умолчанию:
session_show: falsefile_upload_limitВ значении параметра указывается ключ для сброса TCP-соединения, если будет осуществлена попытка загрузки файла на сервер с установленным заголовком «multipart/form-data».
Механизм позволяет избежать DOS-атак, осуществляемых посредством передачи файлов большого объема (включает ограничение загрузки файла по заголовку типа контента).
Типа параметра:
«on»;
«off».
По умолчанию:
file_upload_limit: "on"upload_size_limitВ значении параметра определяется ограничение размера тела запроса.
Типа параметра: группа параметров и их значения.
По умолчанию:
size: 10MbОбязательные параметры:
size
В значении параметра задается максимальный размер тела запроса.
Тип параметра: текстовое значение с суффиксом:
число без суффикса — байты;
k / K — килобайты;
m / M — мегабайты.
Опциональные параметры:
drop
В значении параметра определяется, нужно ли сбрасывать соединение при превышении size.
Тип параметра: логическое значение:
on;
off.
По умолчанию:
drop: offenable
В значении параметра определяется, включать ли ограничение размера тела запроса.
Тип параметра: логическое значение:
true;
false.
По умолчанию:
enable: true
upload_size_limit: size: 40M drop: on enable: truedownload_size_limit
В значении параметра определяется ограничение размера тела ответа.
Типа параметра: группа параметров и их значения.
По умолчанию: 1Mb.
Обязательные параметры:
size
В значении параметра задается максимальный размер тела запроса.
Тип параметра: текстовое значение с суффиксом:
число без суффикса — байты;
k / K — килобайты;
m / M — мегабайты.
Опциональные параметры:
drop
В значении параметра определяется, нужно ли сбрасывать соединение при превышении size.
Тип параметра: логическое значение:
on;
off.
По умолчанию:
drop: offstatus
В значении параметра задается статус код при превышении размера тела ответа.
Тип параметра: текстовое значение.
По умолчанию:
status: 413
download_size_limit: size: 50k drop: off status: 413http_version
В значении параметра указывается версия протокола HTTP для проксирования.
Тип параметра:
1.0;
1.1.
По умолчанию:
http_version: 1.1http_version
В значении параметра указывается версия протокола HTTP для проксирования.
Тип параметра:
1.0;
1.1.
cookie_domain
В значении параметра задается текст, который нужно изменить в атрибуте domain полей Set-Cookie заголовка ответа proxy-service.
Тип параметра: группа параметров и их значения.
По умолчанию: по умолчанию параметр cookie_domain отключен.
Обязательные параметры:
from
Текст, который нужно изменить в атрибуте domain.
Тип параметра: строковое значение.
to
Текст, на который нужно будет изменить.
Тип параметра: строковое значение.
Предположим, проксируемый сервер вернул поле заголовка Set-Cookie с атрибутом domain=localhost. Тогда оно будет заменено на значение example.org:
cookie_domain: from: localhost to: example.orgproxy_connect_timeout
В значении параметра задается таймаут для установления соединения с proxy-service.
Тип параметра: текстовое значение с суффиксом:
ms — миллисекунда;
s — секунда;
m — минута;
h — час;
d — день;
w — неделя;
M — месяц (30 дней);
y — год (365 дней).
По умолчанию:
proxy_connect_timeout: 60sproxy_read_timeout
В значении параметра задается таймаут при чтении ответа proxy-service.
Тип параметра: текстовое значение с суффиксом:
ms — миллисекунда;
s — секунда;
m — минута;
h — час;
d — день;
w — неделя;
M — месяц (30 дней);
y — год (365 дней).
По умолчанию:
proxy_read_timeout: 60sproxy_send_timeout
В значении параметра задается таймаут при передаче запроса proxy-service.
Тип параметра: текстовое значение с суффиксом:
ms — миллисекунда;
s — секунда;
m — минута;
h — час;
d — день;
w — неделя;
M — месяц (30 дней);
y — год (365 дней).
По умолчанию:
proxy_send_timeout: 60sproxy_headers_hash_bucket_size
В значении параметра задается размер корзины для хэш-таблиц, используемых директивой set_header (описание приведено в разделе «Пaраметр modifiers»).
Тип параметра: текстовое значение.
По умолчанию:
proxy_headers_hash_bucket_size: 64proxy_headers_hash_max_size
В значении параметра задается максимальный размер хэш-таблиц, используемых директивой set_header (описание приведено в разделе «Пaраметр modifiers»).
Тип параметра: текстовое значение.
По умолчанию:
proxy_headers_hash_max_size: 512set_variable
В значении параметра могут быть определены имена переменных и их значения.
Тип параметра: последовательность параметров и их значения.
По умолчанию: значения последовательности задаются пользователем.
Обязательные параметры:
name
В значении параметра указывается имя переменной.
Тип параметра: текстовое значение.
value
В значении параметра указывается значение переменной.
Тип параметра: текстовое значение.
opentelemetry_tracing
Секция параметров телеметрии.
Секция, включающая в себя параметры, рассмотренные в разделе «Параметр opentelemetry_tracing».
Тип параметра: секция параметров и их значения.
По умолчанию: значения группы задаются пользователем.
max_headersЗадаёт максимальное количество заголовков в клиентском запросе.
Тип параметра: целочисленное значение.
По умолчанию:
max_headers: 500event_hook
Группа параметров event_hook производит журналирование событий.
Группа, включающая в себя параметры, описанные в разделе Параметр event_hook.
Группа параметров event_hook наследуется всеми сервисами, указанными после сервиса service_main_proxy. Если в последующем сервисе определена директива event_hook, то она переопределит директиву, указанную в сервисе service_main_proxy.
Тип параметра: группа параметров и их значения.
По умолчанию: значения группы задаются пользователем.
security_headers
Группа параметров security_headers предназначена для определения безопасных заголовков ответа.
Группа, включающая в себя параметры, описанные в разделе Параметр security_headers.
Тип параметра: группа параметров и их значения.
По умолчанию: значения группы задаются пользователем.
exclude_req_stat
exclude_resp_stat
В значениях параметров исключаются сервисы из статистики учета реквестов/респонсов.
Параметры подробно рассмотрены в разделе Параметр exclude_stat.
Тип параметра: последовательность строковых значений.
По умолчанию: значения последовательности задаются пользователем.
limit_req
Группа параметров limit_req предназначена для ограничения скорости обработки запросов. В ней определяется, требуется ли пропускать избыточные запросы в пределах всплеска без задержки.
Группа, включающая в себя параметры, рассмотренные в разделе Параметр limit_req.
Тип параметра: группа параметров и их значения.
По умолчанию: значения группы задаются пользователем.
limit_requests — группа параметров, описанных в разделе Пaраметр limit_requests.
Возможные значения: последовательность параметров и их значения.
По умолчанию: не имеет значения по умолчанию.
robot_mitigation
Группа параметров robot_mitigation предназначена для противодействия роботам, отправляющим HTTP запросы, а также сканированию портов. Принцип работы основан на отправке клиенту ответов на его запросы, которые должны быть интерпретированы клиентом требуемым образом, для того чтобы модуль мог определить допустимую активность.
Группа, включающая в себя параметры, рассмотренные в разделе Параметр robot_mitigation.
Тип параметра: группа параметров и их значения.
По умолчанию: значения группы задаются пользователем.
ip_behavior
Группа параметров ip_behavior предназначена для мониторинга поведения пользователей при доступе к серверу. ip_behavior в основном используется с другими группами параметров безопасности, такими как limit_req и robot_mitigation. ip_behavior поддерживает обнаружение доступа только через url.
Группа, включающая в себя параметры, рассмотренные в разделе Параметр ip_behavior.
Тип параметра: группа параметров и их значения.
По умолчанию: значения группы задаются пользователем.
cookie_poisoning
Группа параметров cookie_poisoning отслеживает заголовки Set-Cookies и значения cookie в ответе со стороны сервера. Если отслеживаемые значения файлов cookie изменяются на стороне клиента, cookie_poisoning обнаруживает это и выполняет действия в соответствии с настройками пользователя. Группа параметров зависит от session_module (параметры: session, session_timeout, session_cookie_name, session_redirect_timeout, session_show), поэтому перед использованием директив cookie_poisoning необходимо сначала включить session_module.
Группа, включающая в себя параметры, рассмотренные в разделе Параметр cookie_poisoning.
Тип параметра: группа параметров и их значения.
По умолчанию: значения группы задаются пользователем.
gzip
Группа параметров gzip позволяет осуществлять сжатие ответа одноименным методом.
Группа, включающая в себя параметры, рассмотренные в разделе Параметр gzip.
Тип параметра: группа параметров и их значения.
По умолчанию: значения группы задаются пользователем.
client_body_buffer_size
client_body_in_file_only
client_body_in_single_buffer
client_header_buffer_size
large_client_header_buffers
output_buffers
subrequest_output_buffer_size
proxy_buffer_size
proxy_buffering
proxy_buffers
proxy_busy_buffers_size
proxy_request_buffering
Секция параметров буферизации.
Секция, включающая в себя параметры, рассмотренные в разделе Параметр buffers.
Тип параметра: секция параметров и их значения.
По умолчанию: значения группы задаются пользователем.
async_io
Группа параметров, отвечающих за настройку файлового асинхронного ввода-вывода.
Группа, включающая в себя параметры, рассмотренные в разделе Параметр async_io.
Тип параметра: группа параметров и их значения.
По умолчанию: значения группы задаются пользователем.
req_gunzip
Секция, включающая в себя параметры, рассмотренные в разделе Параметр req_gunzip.
Тип параметра: секция параметров и их значения.
По умолчанию: значения группы задаются пользователем.
log_masking - группа параметров log_masking предназначена для задания правил маскирования чувствительной информации в логах событий и логов транзакции фильтров безопасности.
Группа параметров, описанных в разделе Параметр log_masking_rules.
Возможные значения: последовательность параметров и их значения.
По умолчанию: не имеет значения по умолчанию.
http2 - группа параметров http2 позволяет регулировать настройки входящих подключений по протоколу http2.
Группа параметров, описанных в разделе Параметр http2.
Возможные значения: последовательность параметров и их значения.
По умолчанию: не имеет значения по умолчанию.
logging — группа параметров logging предназначена для задания параметров отправки событий конфигуратора.
Группа параметров, описанных в разделе Параметр logging.
Возможные значения: последовательность параметров и их значения.
По умолчанию: не имеет значения по умолчанию.
pipelined_requests — в значении параметра указывается признак запрета использования HTTP pipelined requests для входящих запросов клиента. Если установлено значение off, то в случае получения нескольких pipelined запросов будет обработан только первый, после чего соединение будет закрыто и в логах появится сообщение об ошибке.
Возможные значения:
on;
off.
По умолчанию: on.
http2_only — включение ограничения приема входящих соединений только по протоколу http2.
Возможные значения:
on;
off.
По умолчанию: off.
keepalive_time — ограничивает максимальное время, в течение которого могут обрабатываться запросы в рамках keep-alive соединения. По достижении заданного времени соединение закрывается после обработки очередного запроса.
Возможные значения: текстовое значение с суффиксом:
ms — миллисекунда;
s — секунда;
m — минута;
h — час;
d — день;
w — неделя;
M — месяц (30 дней);
y — год (365 дней).
По умолчанию: 1h.
redirect
В значении параметра возвращается временное перенаправление с кодом 302, 307 или постоянное перенаправление с кодом 301, 308.
Тип параметра: группа параметров и их значения.
По умолчанию: значения группы задаются пользователем.
Обязательные параметры:
from
В значении параметра задается регулярное значение URI запроса.
Тип параметра: текстовое значение.
to
В значении параметра определяется заменяющая строка.
Тип параметра: текстовое значение.
Опциональные параметры:
type
В значении параметра определяется тип перенаправления. Допускается указание нескольких типов перенаправления.
Тип параметра: текстовое значение.
redirect — статус код 302;
permanent — статус код 301;
redirect_temp — статус код 307;
redirect_perm — статус код 308.
По умолчанию:
type: redirectcondition
В значении параметра задается выражение, включающее в себя следующие параметры: var, operator, val. Перенаправление будет осуществлено в случае выполнения заданного условия.
Тип параметра: последовательность параметров и их значения.
По умолчанию: не имеет значения по умолчанию.
Обязательные параметры:
var
В значении параметра указывается обозначение имени переменной.
Тип параметра: текстовое значение.
По умолчанию: не имеет значения по умолчанию.
operator
В значении параметра задается оператор выражения.
Тип параметра: текстовое значение.
„=“;
„!=“;
„~“;
„~*“;
„!~“;
„!~*“.
По умолчанию: не имеет значения по умолчанию.
val
В значении параметра указывается значение переменной.
Тип параметра: текстовое значение.
По умолчанию: не имеет значения по умолчанию.