Spec-Zone.ru › Apache HTTP Server

Модуль Apache mod_reqtimeout

Описание: Задание тайм-аута и минимальной скорости передачи данных при получении запросов
Статус: Расширение
Идентификатор модуля: reqtimeout_module
Файл исходного кода: mod_reqtimeout.c
Совместимость: Доступен в Apache HTTPD 2.2.15 и более поздних версиях

Краткое описание

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

Это событие записывается в LogLevel info.

При необходимости директиву LogLevel можно изменить, чтобы явно записывать это событие в журнал:

LogLevel reqtimeout:info

Примеры

  1. Выделить 5 секунд на завершение TLS-рукопожатия, 10 секунд на получение заголовков запроса и 30 секунд на получение тела запроса:
    RequestReadTimeout handshake=5 header=10 body=30
  2. Выделить не менее 10 секунд на получение тела запроса. Если клиент отправляет данные, увеличивать тайм-аут на 1 секунду за каждые полученные 1000 байт без верхнего предела для тайм-аута (за исключением предела, косвенно задаваемого директивой LimitRequestBody):
    RequestReadTimeout body=10,MinRate=1000
  3. Выделить не менее 10 секунд на получение заголовков запроса. Если клиент отправляет данные, увеличивать тайм-аут на 1 секунду за каждые полученные 500 байт. При этом на получение заголовков запроса должно отводиться не более 30 секунд:
    RequestReadTimeout header=10-30,MinRate=500
  4. Обычно на сервере следует настроить тайм-ауты как для заголовков, так и для тела запроса. Если для виртуальных хостов http и https используется общая конфигурация, не следует задавать слишком низкие значения тайм-аутов:
    RequestReadTimeout header=20-40,MinRate=500 body=20,MinRate=500

Директива RequestReadTimeout

Описание: Задание значений тайм-аута для завершения TLS-рукопожатия, получения заголовков запроса и/или тела запроса от клиента.
Синтаксис:
RequestReadTimeout [handshake=timeout[-maxtimeout][,MinRate=rate] [header=timeout[-maxtimeout][,MinRate=rate] [body=timeout[-maxtimeout][,MinRate=rate]
Значение по умолчанию:
RequestReadTimeout handshake=0 header=20-40,MinRate=500 body=20,MinRate=500
Контекст: конфигурация сервера, виртуальный хост
Статус: Расширение
Модуль: mod_reqtimeout
Совместимость: Доступна в версии 2.2.15 и более поздних; в версии 2.3.14 и более ранних по умолчанию была отключена. Этап handshake доступен начиная с версии 2.4.39.

Эта директива позволяет задавать различные тайм-ауты для завершения TLS-рукопожатия, получения заголовков запроса и/или тела запроса от клиента. Если клиент не завершит каждый из этих этапов за настроенное время, будет отправлена ошибка 408 REQUEST TIME OUT.

Для виртуальных хостов SSL значение тайм-аута handshake обозначает время, необходимое для выполнения начального SSL-рукопожатия. Если браузер пользователя настроен на проверку списков отзыва сертификатов, а сервер CRL недоступен, начальное SSL-рукопожатие может занять значительное время, пока браузер не прекратит ожидание ответа от сервера CRL. Поэтому при настройке тайм-аута handshake для виртуальных хостов SSL следует учитывать эту возможную задержку (если необходимо). Значения тайм-аута для тела запроса включают время, необходимое для повторного согласования SSL (если оно требуется).

Если используется AcceptFilter (обычно это так в Linux и FreeBSD), сокет не передаётся процессу сервера до получения как минимум одного байта (или всего запроса для httpready). Тайм-ауты рукопожатия и заголовков, настроенные с помощью RequestReadTimeout, вступают в силу только после того, как процесс сервера получит сокет.

Для каждого из трёх этапов тайм-аута (рукопожатие, заголовки или тело запроса) тайм-аут можно задать одним из трёх способов:

  • Фиксированное значение тайм-аута:
    stage=timeout

    Время в секундах, отведённое на завершение всего этапа (выполнение рукопожатия, чтение всех заголовков запроса или тела запроса). Значение 0 означает отсутствие ограничения.

  • Отключение модуля для виртуального хоста:
    handshake=0 header=0 body=0

    Полностью отключает mod_reqtimeout (обратите внимание: handshake=0 уже используется по умолчанию, поэтому его можно опустить).

  • Значение тайм-аута, увеличиваемое при получении данных:
    stage=timeout,MinRate=data_rate

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

  • Значение тайм-аута, увеличиваемое при получении данных, с верхним пределом:
    stage=timeout-maxtimeout,MinRate=data_rate

    То же, что и выше, но тайм-аут не будет увеличен выше второго значения указанного диапазона тайм-аута.

© 2018 The Apache Software Foundation
Licensed under the Apache License, Version 2.0.
https://httpd.apache.org/docs/2.4/en/mod/mod_reqtimeout.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API