Тип сервиса 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 (parameter_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: false
    
  • optional

    Группа optional используется в сервисе для:

    • вызова различных таймаутов;

    • настройки сессии;

    • ограничения по размеру лимита тела запроса/ответа;

    • вызова различных утилит;

    • и др.

    Группа, включающая в себя параметры, описанные в разделе "MainProxy - optional".

    Тип параметра: группа параметров и их значения.

    По умолчанию: значения группы задаются пользователем.

  • filters

    Группа, включающая в себя следующие параметры:

    • фильтр modsecurity - позволяет проверить download/upload трафик на наличие угроз (например sql-injection), содержащихся в методе, хэдорах, теле и др.;

    • фильтр icap - позволяет проверить download/upload трафик на наличие вирусов. Проверка на вирусы осуществляется путем отправки вложения внешнему антивирусу.

    Группа, включающая в себя параметры, описанные в разделе "MainProxy - optional".

    Тип параметра: группа параметров и их значения.

    По умолчанию: значения группы задаются пользователем.

  • validators

    Валидация тела запроса/ответа.

    Группа, включающая в себя параметры, описанные в разделе "Валидация".

    Тип параметра: группа параметров и их значения.

    По умолчанию: значения группы задаются пользователем.

  • modifiers

    Группа modifiers позволяет изменять содержимое заголовков запроса и ответа.

    Группа, включающая в себя параметры, описанные в разделе "Параметр modifiers".

    Тип параметра: группа параметров и их значения.

    По умолчанию: значения группы задаются пользователем.

  • postprocessors

    Постобработчик postprocessor_error предназначен для формирования сообщения об ошибке для клиента по указанному шаблону.

    Группа, включающая в себя параметры, описанные в разделе "Постобработчик postprocessor_error".

    Тип параметра: группа параметров и их значения.

    По умолчанию: значения группы задаются пользователем.

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: 60s
    
  • client_body_timeout

    В значении параметра указывается таймаут при чтении тела запроса клиента.

    Типа параметра: текстовое значение с суффиксом:

    • ms - миллисекунда;

    • s - секунда;

    • m - минута;

    • h - час;

    • d - день;

    • w - неделя;

    • M - месяц (30 дней);

    • y - год (365 дней).

    По умолчанию:

    client_body_timeout: 60s
    
  • keepalive_timeout

    В значении параметра указывается таймаут, в течение которого keep-alive соединение с клиентом не будет закрыто со стороны сервера.

    Типа параметра: текстовое значение с суффиксом:

    • ms - миллисекунда;

    • s - секунда;

    • m - минута;

    • h - час;

    • d - день;

    • w - неделя;

    • M - месяц (30 дней);

    • y - год (365 дней).

    По умолчанию:

    keepalive_timeout: 75s
    
  • keepalive_requests

    В значении параметра указывается максимальное число запросов, которые можно сделать по одному keep-alive соединению.

    Типа параметра: целочисленное значение.

    По умолчанию:

    keepalive_requests: 10000
    
  • send_timeout_to_client

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

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

    Если по истечении этого времени клиент ничего не примет, соединение будет закрыто.

    Типа параметра: текстовое значение с суффиксом:

    • ms - миллисекунда;

    • s - секунда;

    • m - минута;

    • h - час;

    • d - день;

    • w - неделя;

    • M - месяц (30 дней);

    • y - год (365 дней).

    По умолчанию:

    send_timeout_to_client: 60s
    
  • session

    В значении параметра включается поддержка http сессии.

    session_module (параметры: session, session_timeout, session_cookie_name, session_redirect_timeout, session_show) предоставляет собой функцию отслеживания http запросов - записывается информация о сеансе, устанавливая cookie в браузере клиента. Некоторые модули безопасности, такие как ip_behavior, основываются на данном модуле.

    Типа параметра: логическое значение:

    • on;

    • off.

    По умолчанию:

    session: off
    
  • session_timeout

    В значении параметра указывается таймаут сессии.

    Типа параметра: целочисленное значение.

    По умолчанию:

    session_timeout: 60s
    
  • session_cookie_name

    В значении параметра указывается имя куки сессии.

    Типа параметра: текстовое значение.

    По умолчанию:

    session_cookie_name: SENGINX-SESSION-ID
    
  • session_redirect_timeout

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

    Значение в секундах. Значение не должно быть больше session_timeout.

    Типа параметра: целочисленное значение.

    По умолчанию:

    session_redirect_timeout: 5
    
  • session_show

    В значении параметра определяется возможность просматривать информацию о текущих сессиях.

    Типа параметра: логическое значение:

    • true;

    • false.

    По умолчанию:

    session_show: false
    
  • file_upload_limit

    В значении параметра указывается ключ для сброса TCP-соединения, если будет осуществлена попытка загрузки файла на сервер с установленным заголовком "multipart/form-data".

    Механизм позволяет избежать DOS-атак, осуществляемых посредством передачи файлов большого объема (включает ограничение загрузки файла по заголовку типа контента).

    Типа параметра:

    • "on";

    • "off".

    По умолчанию:

    file_upload_limit: "on"
    
  • upload_size_limit

    В значении параметра определяется ограничение размера тела запроса.

    Типа параметра: группа параметров и их значения.

    По умолчанию: значения группы задаются пользователем.

    Обязательные параметры:

    • size

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

      Тип параметра: текстовое значение с суффиксом:

      • число без суффикса - байты;

      • k / K - килобайты;

      • m / M - мегабайты.

    Опциональные параметры:

    • drop

      В значении параметра определяется, нужно ли сбрасывать соединение при превышении size.

      Тип параметра: логическое значение:

      • on;

      • off.

      По умолчанию:

      drop: off
      
    • (2.3) enable

      В значении параметра определяется, включать ли ограничение размера тела запроса.

      Тип параметра: логическое значение:

      • true;

      • false.

      По умолчанию:

      enable: true
      
    upload_size_limit:
      size: 40M
      drop: on
      enable: true
    
  • download_size_limit

    В значении параметра определяется ограничение размера тела ответа.

    Типа параметра: группа параметров и их значения.

    По умолчанию: значения группы задаются пользователем.

    Обязательные параметры:

    • size

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

      Тип параметра: текстовое значение с суффиксом:

      • число без суффикса - байты;

      • k / K - килобайты;

      • m / M - мегабайты.

    Опциональные параметры:

    • drop

      В значении параметра определяется, нужно ли сбрасывать соединение при превышении size.

      Тип параметра: логическое значение:

      • on;

      • off.

      По умолчанию:

      drop: off
      
    • (2.3) status

      В значении параметра задается статус код при превышении размера тела ответа.

      Тип параметра: текстовое значение.

      По умолчанию:

      status: 413
      
    download_size_limit:
      size: 50k
      drop: off
      status: 413
    
  • http_version

    В значении параметра указывается версия протокола HTTP для проксирования.

    Тип параметра:

    • 1.0;

    • 1.1.

    По умолчанию:

    http_version: 1.1
    
  • http_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.org
    
  • proxy_connect_timeout

    В значении параметра задается таймаут для установления соединения с proxy-service.

    Тип параметра: текстовое значение с суффиксом:

    • ms - миллисекунда;

    • s - секунда;

    • m - минута;

    • h - час;

    • d - день;

    • w - неделя;

    • M - месяц (30 дней);

    • y - год (365 дней).

    По умолчанию:

    proxy_connect_timeout: 60s
    
  • proxy_read_timeout

    В значении параметра задается таймаут при чтении ответа proxy-service.

    Тип параметра: текстовое значение с суффиксом:

    • ms - миллисекунда;

    • s - секунда;

    • m - минута;

    • h - час;

    • d - день;

    • w - неделя;

    • M - месяц (30 дней);

    • y - год (365 дней).

    По умолчанию:

    proxy_read_timeout: 60s
    
  • proxy_send_timeout

    В значении параметра задается таймаут при передаче запроса proxy-service.

    Тип параметра: текстовое значение с суффиксом:

    • ms - миллисекунда;

    • s - секунда;

    • m - минута;

    • h - час;

    • d - день;

    • w - неделя;

    • M - месяц (30 дней);

    • y - год (365 дней).

    По умолчанию:

    proxy_send_timeout: 60s
    
  • proxy_headers_hash_bucket_size

    В значении параметра задается размер корзины для хэш-таблиц, используемых директивами proxy_set_headers и proxy_hide_headers.

    Тип параметра: текстовое значение.

    По умолчанию:

    proxy_headers_hash_bucket_size: 64
    
  • proxy_headers_hash_max_size

    В значении параметра задается максимальный размер хэш-таблиц, используемых директивами proxy_set_headers и proxy_hide_headers.

    Тип параметра: текстовое значение.

    По умолчанию:

    proxy_headers_hash_max_size: 512
    
  • set_variable

    В значении параметра могут быть определены имена переменных и их значения.

    Тип параметра: последовательность параметров и их значения.

    По умолчанию: значения последовательности задаются пользователем.

    Обязательные параметры:

    • name

      В значении параметра указывается имя переменной.

      Тип параметра: текстовое значение.

    • value

      В значении параметра указывается значение переменной.

      Тип параметра: текстовое значение.

  • event_hook

    Группа параметров event_hook производит журналирование событий.

    Группа, включающая в себя параметры, описанные в разделе "Параметр event_hook".

    Тип параметра: группа параметров и их значения.

    По умолчанию: значения группы задаются пользователем.

  • security_headers

    Группа параметров security_headers предназначена для определения безопасных заголовков ответа.

    Группа, включающая в себя параметры, описанные в разделе "Параметр security_headers".

    Тип параметра: группа параметров и их значения.

    По умолчанию: значения группы задаются пользователем.

  • exclude_req_stat

    exclude_resp_stat

    В значениях параметров исключаются сервисы из статистики учета реквестов/респонсов.

    Параметры подробно рассмотрены в разделе "Параметр exclude_stat".

    Тип параметра: последовательность строковых значений.

    По умолчанию: значения последовательности задаются пользователем.

  • limit_req

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

    Группа, включающая в себя параметры, рассмотренные в разделе "Параметр limit_req".

    Тип параметра: группа параметров и их значения.

    По умолчанию: значения группы задаются пользователем.

  • 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".

    Тип параметра: группа параметров и их значения.

    По умолчанию: значения группы задаются пользователем.

  • spnego

    Группа параметров spnego предназначена для аутентификации kerberos.

    Группа, включающая в себя параметры, рассмотренные в разделе "Параметр spnego".

    Тип параметра: группа параметров и их значения.

    По умолчанию: значения группы задаются пользователем.

  • 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".

    Тип параметра: группа параметров и их значения.

    По умолчанию: значения группы задаются пользователем.

  • (2.1, 2.2) req_gunzip

    Секция, включающая в себя параметры, рассмотренные в разделе "Параметр req_gunzip".

    Тип параметра: секция параметров и их значения.

    По умолчанию: значения группы задаются пользователем.

  • log_masking - группа параметров log_masking предназначена для задания правил маскирования чувствительной информации в логах событий и логов транзакции фильтров безопасности.

    Группа параметров, описанных в разделе "Параметр log_masking_rules".

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

    По умолчанию: не имеет значения по умолчанию.

  • http2 - группа параметров http2 позволяет регулировать настройки входящих подключений по протоколу http2.

    Группа параметров, описанных в разделе "Параметр http2".

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

    По умолчанию: не имеет значения по умолчанию.

  • logging - группа параметров logging предназначена для задания параметров отправки событий конфигуратора.

    Группа параметров, описанных в разделе "Параметр logging".

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

    По умолчанию: не имеет значения по умолчанию.

  • (2.4) pipelined_requests - в значении параметра указывается признак запрета использования HTTP pipelined requests для входящих запросов клиента. Если установлено значение off, то в случае получения нескольких pipelined запросов будет обработан только первый, после чего соединение будет закрыто и в логах появится сообщение об ошибке.

    Возможные значения:

    • on;

    • off.

    По умолчанию: on.

  • (2.4) http2_only - включение ограничения приема входящих соединений только по протоколу http2.

    Возможные значения:

    • on;

    • off.

    По умолчанию: off.

  • (2.4) 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: redirect
      
    • condition

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

      Тип параметра: последовательность параметров и их значения.

      По умолчанию: не имеет значения по умолчанию.

      Обязательные параметры:

      • var

        В значении параметра указывается обозначение имени переменной.

        Тип параметра: текстовое значение.

        По умолчанию: не имеет значения по умолчанию.

      • operator

        В значении параметра задается оператор выражения.

        Тип параметра: текстовое значение.

        • '=';

        • '!=';

        • '~';

        • '~*';

        • '!~';

        • '!~*'.

        По умолчанию: не имеет значения по умолчанию.

      • val

        В значении параметра указывается значение переменной.

        Тип параметра: текстовое значение.

        По умолчанию: не имеет значения по умолчанию.