Apache. Документация на русском


Разделы:   1    2    3    4    5    6    7    8    9      10      11    12    13    14    15    16  

Раздел 10. Модули Апача

Пункты:   85    86    88    89    90    91    92    93    94    95    96    97    98    99    100    101    102    103    104    105    106    107    108    109    110    111    112    113    114    115    116    117    118    119    120    121    122    123    124    125    126    127    128    129    130    131    132    133    134    135    136    137    138    139    140    141    142    143    144    145    146      147      148    149    150    151    152    153    154    155    156    157    158    159    160    161    163    164    165    166    167    168    170    171    172    173    174    175    176    177    178    179    180    181    182    183    184    185    186    187    188    189    190    191    192    193    194    195    196    197    198    199    200    201    203    204    205    206    207    208    209    210    211    212    213  

 <         > 
  RU            EN  

Пункт 147. Модуль Apache mod_http2

Этот модуль обеспечивает поддержку HTTP/2 (RFC 7540) для HTTP-сервера Apache.

Этот модуль использует libnghttp2 для обеспечения основного механизма http/2.

Вы должны включить HTTP/2 через, Protocols чтобы использовать функциональные возможности, описанные в этом документе. Протокол HTTP/2 не требует использования шифрования, поэтому доступны две схемы: h2 (HTTP/2 через TLS) и h2c (HTTP/2 через TCP).

Две полезные схемы конфигурации:

HTTP/2 в контексте VirtualHost (только TLS)

 Протоколы h2 http/1.1 

Разрешает согласование HTTP/2 (h2) через TLS ALPN в защищенном файле <VirtualHost> . Проверка преамбулы HTTP/2 (прямой режим, см. H2Direct ) отключена по умолчанию для h2 .

HTTP/2 в контексте сервера (TLS и открытый текст)

 Протоколы h2 h2c http/1.1 

Разрешает согласование HTTP/2 (h2) через TLS ALPN для безопасного <VirtualHost> . Разрешает обновление согласования открытого текста HTTP/2 (h2c) с исходного соединения HTTP/1.1 или с помощью проверки преамбулы HTTP/2 (прямой режим, см. H2Direct ).

Обратитесь к официальному FAQ по HTTP/2, если у вас возникнут сомнения относительно протокола.

Как это работает

Измерение HTTP/2

Включение HTTP/2 на вашем сервере Apache влияет на потребление ресурсов, и если у вас загруженный сайт, вам может потребоваться тщательно обдумать последствия.

Первое, что бросается в глаза после включения HTTP/2, это то, что ваши серверные процессы будут запускать дополнительные потоки. Причина этого в том, что HTTP/2 передает все запросы, которые он получает, своим собственным рабочим потокам для обработки, собирает результаты и передает их клиенту.

В текущей реализации эти рабочие потоки используют отдельный пул потоков от рабочих процессов MPM, с которыми вы, возможно, знакомы. Так обстоят дела сейчас, и не должно быть так вечно. (Однако это может быть навсегда для линейки выпусков 2.4.x.) Таким образом, рабочие процессы HTTP/2 или более короткие H2Workers не будут отображаться в mod_status . Они также не учитываются в таких директивах, как ThreadsPerChild . Однако они принимаются ThreadsPerChild по умолчанию, если вы не настроили что-то еще через H2MinWorkers и H2MaxWorkers .

Еще одна вещь, на которую следует обратить внимание, — это потребление памяти. Поскольку HTTP/2 хранит на сервере больше состояния для управления всеми открытыми запросами, их приоритетами и зависимостями между ними, для него всегда будет требоваться больше памяти, чем для обработки HTTP/1.1. Есть три директивы, которые управляют объемом памяти соединения HTTP/2: H2MaxSessionStreams , H2WindowSize и H2StreamMaxMemSize .

H2MaxSessionStreams ограничивает количество параллельных запросов, которые клиент может сделать в соединении HTTP/2. Это зависит от вашего сайта, сколько вы должны разрешить. По умолчанию установлено значение 100, чего вполне достаточно, и если у вас не возникнет проблем с памятью, я бы оставил его таким. Большинство запросов, отправляемых браузерами, представляют собой GET-запросы без тела, поэтому они занимают лишь немного памяти, пока не начнется фактическая обработка.

H2WindowSize контролирует, сколько клиенту разрешено отправлять в виде тела запроса, прежде чем он будет ждать, пока сервер предложит больше. Или, наоборот, это объем данных тела запроса, который сервер должен иметь возможность буферизовать. Это по запросу.

И последнее, но не менее важное: H2StreamMaxMemSize контролирует, сколько данных ответа должно быть буферизовано. Запрос находится в потоке H2Worker и производит данные, соединение HTTP/2 пытается отправить их клиенту. Если клиент читает недостаточно быстро, соединение буферизует этот объем данных, а затем приостанавливает работу H2Worker.

Несколько хостов и неверные запросы

Многие сайты используют один и тот же сертификат TLS для нескольких виртуальных хостов. Сертификат либо имеет подстановочное имя, например «*.example.org», либо содержит несколько альтернативных имен. Браузеры, использующие HTTP/2, распознают это и повторно используют уже открытое соединение для таких хостов.

Хотя это отлично подходит для производительности, это имеет свою цену: такие виртуальные хосты требуют большей осторожности при настройке. Проблема в том, что у вас будет несколько запросов для нескольких хостов в одном и том же TLS-соединении. И это делает повторное согласование невозможным, несмотря на то, что стандарт HTTP/2 запрещает это.

Итак, если у вас есть несколько виртуальных хостов, использующих один и тот же сертификат, и вы хотите использовать для них HTTP/2, вам необходимо убедиться, что все виртуальные хосты имеют одинаковую конфигурацию SSL. Вам нужен тот же протокол, шифры и настройки для проверки клиента.

Если вы что-то смешаете, Apache httpd обнаружит это и вернет клиенту специальный код ответа 421 Misdirected Request.

Переменные среды

Этот модуль можно настроить для предоставления информации, связанной с HTTP/2, в качестве дополнительных переменных среды для пространства имен SSI и CGI, а также в настраиваемых конфигурациях журнала (см. Ресурсы %{VAR_NAME}e ).

Имя переменной: Тип значения: Описание:
HTTP2 флагHTTP/2 используется.
H2PUSH флагHTTP/2 Server Push включен для этого подключения и также поддерживается клиентом.
H2_PUSH флагальтернативное имя для H2PUSH
H2_PUSHED нитьпустой или PUSHED для запроса, отправляемого сервером.
H2_PUSHED_ON числоНомер потока HTTP/2, который инициировал отправку этого запроса.
H2_STREAM_ID числоНомер потока HTTP/2 этого запроса.
H2_STREAM_TAG нитьУникальный идентификатор потока обработки HTTP/2, состоящий из идентификатора соединения и идентификатора потока, разделенных - .


Директива H2CopyFiles

Описание:Определить обработку файлов в ответах
Синтаксис: H2CopyFiles on|off
По умолчанию: H2CopyFiles off
Контекст:конфигурация сервера, виртуальный хост, каталог, .htaccess
Положение дел:Расширение
Модуль:mod_http2
Совместимость:Доступно в версии 2.4.24 и выше.

Эта директива влияет на то, как содержимое файла обрабатывается в ответах. Когда off , что является значением по умолчанию, дескрипторы файлов передаются от обработки запроса к основному соединению, используя обычную обработку Apache setaside для управления временем существования файла.

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

Примером такого модуля является mod_wsgi то, что он может помещать в ответ дескрипторы файлов Python. Эти файлы закрываются, когда Python считает, что обработка завершена. Это может быть задолго до того, как mod_http2 с ними будет покончено.



Директива H2Direct

Описание:Переключатель прямого протокола H2
Синтаксис: H2Direct on|off
По умолчанию: H2Direct on for h2c, off for h2 protocol
Контекст:конфигурация сервера, виртуальный хост
Положение дел:Расширение
Модуль:mod_http2

Эта директива переключает использование прямого режима HTTP/2. Это следует использовать внутри <VirtualHost> раздела, чтобы включить прямую связь HTTP/2 для этого виртуального хоста.

Прямая связь означает, что если первые байты, полученные сервером при соединении, совпадают с преамбулой HTTP/2, протокол HTTP/2 переключается немедленно без дальнейшего согласования. Этот режим определен в RFC 7540 для случая открытого текста (h2c). Его использование в соединениях TLS не предусмотрено стандартом.

Если на сервере/виртуальном хосте не включены h2 или h2c через Protocols , соединение никогда не проверяется на наличие преамбулы HTTP/2. H2Direct тогда не важно. Это важно для соединений, использующих протоколы, где начальное чтение может зависнуть на неопределенный срок, например NNTP.

Для клиентов, у которых есть дополнительные сведения о сервере, поддерживающем h2c, прямой HTTP/2 избавляет клиента от необходимости выполнять обновление HTTP/1.1, что приводит к повышению производительности и избеганию ограничений обновления для тела запроса.

Это делает прямой h2c привлекательным для связи между серверами, когда соединение может быть доверенным или защищено другими средствами.

Пример

 H2Прямой на 


Директива H2EarlyHints

Описание:Определить отправку 103 кодов состояния
Синтаксис: H2EarlyHints on|off
По умолчанию: H2EarlyHints off
Контекст:конфигурация сервера, виртуальный хост
Положение дел:Расширение
Модуль:mod_http2
Совместимость:Доступно в версии 2.4.24 и выше.

Этот параметр определяет, будут ли промежуточные ответы со статусом HTTP 103 пересылаться клиенту или нет. По умолчанию в настоящее время это не так, поскольку у ряда клиентов все еще возникают проблемы с неожиданными промежуточными ответами.

Если установлено значение on , PUSH-ресурсы, объявленные с помощью , H2PushResource вызовут промежуточный ответ 103 перед окончательным ответом. Ответ 103 будет содержать Link заголовки, сообщающие preload о таких ресурсах.



Директива H2MaxSessionStreams

Описание:Максимальное количество активных потоков на сеанс HTTP/2.
Синтаксис: H2MaxSessionStreams n
По умолчанию: H2MaxSessionStreams 100
Контекст:конфигурация сервера, виртуальный хост
Положение дел:Расширение
Модуль:mod_http2

Эта директива устанавливает максимальное количество активных потоков на сеанс HTTP/2 (например, соединение), которое разрешает сервер. Поток активен, если он не активен idle или closed согласно RFC 7540.

Пример

 H2MaxSessionStreams 20 


Директива H2MaxWorkerIdleSeconds

Описание:Максимальное количество секунд, в течение которых рабочие процессы h2 остаются бездействующими до закрытия.
Синтаксис: H2MaxWorkerIdleSeconds n
По умолчанию: H2MaxWorkerIdleSeconds 600
Контекст:конфигурация сервера
Положение дел:Расширение
Модуль:mod_http2

Эта директива устанавливает максимальное количество секунд, в течение которых рабочий процесс h2 может бездействовать, пока не выключится. Это происходит только тогда, когда количество рабочих h2 превышает H2MinWorkers .

Пример

 H2MaxWorkerIdleSeconds 20 


Директива H2MaxWorkers

Описание:Максимальное количество рабочих потоков для использования каждым дочерним процессом.
Синтаксис: H2MaxWorkers n
Контекст:конфигурация сервера
Положение дел:Расширение
Модуль:mod_http2

Эта директива устанавливает максимальное количество рабочих потоков, создаваемых каждым дочерним процессом для обработки HTTP/2. Если эта директива не используется, mod_http2 будет выбрано значение, подходящее для mpm загруженного модуля.

Пример

 H2MaxWorkers 20 


Директива H2MinWorkers

Описание:Минимальное количество рабочих потоков для использования каждым дочерним процессом.
Синтаксис: H2MinWorkers n
Контекст:конфигурация сервера
Положение дел:Расширение
Модуль:mod_http2

Эта директива устанавливает минимальное количество рабочих потоков, создаваемых каждым дочерним процессом для обработки HTTP/2. Если эта директива не используется, mod_http2 будет выбрано значение, подходящее для mpm загруженного модуля.

Пример

 H2MinWorkers 10 


Директива H2ModernTLSOnly

Описание:Требовать, чтобы соединения HTTP/2 были только «современными TLS»
Синтаксис: H2ModernTLSOnly on|off
По умолчанию: H2ModernTLSOnly on
Контекст:конфигурация сервера, виртуальный хост
Положение дел:Расширение
Модуль:mod_http2
Совместимость:Доступно в версии 2.4.18 и выше.

Эта директива включает проверку безопасности соединений HTTP/2 в режиме TLS (https:). Это можно использовать для всего сервера или для конкретных <VirtualHost> s.

Для проверки безопасности требуется, чтобы протокол TSL был как минимум TLSv1.2 и чтобы не использовался ни один из шифров, перечисленных в RFC 7540, Приложение A. Эти проверки будут расширены после вступления в силу новых требований безопасности.

Название происходит от определений TLS на стороне безопасности/сервера в Mozilla, где определена «современная совместимость». Mozilla Firefox и другие браузеры требуют современной совместимости для соединений HTTP/2. Как и все в OpSec, это движущаяся цель, и можно ожидать, что в будущем она будет развиваться.

Одной из целей этих проверок mod_http2 является обеспечение этого уровня безопасности для всех соединений, а не только для соединений из браузеров. Другая цель состоит в том, чтобы предотвратить согласование HTTP/2 в качестве протокола, если требования не будут выполнены.

В конечном итоге безопасность TLS-соединения определяется директивами конфигурации сервера для mod_ssl .

Пример

 H2ModernTLSТолько выкл. 


Директива H2Padding

Описание:Определите диапазон байтов заполнения, добавляемых к кадрам полезной нагрузки.
Синтаксис: H2Padding numbits
По умолчанию: H2Padding 0
Контекст:конфигурация сервера, виртуальный хост
Положение дел:Расширение
Модуль:mod_http2
Совместимость:Доступно в версии 2.4.39 (бэкпортировано в 2.4.29-1ubuntu4.8) и более поздних версиях.

При значении по умолчанию 0 байты заполнения не добавляются ни к каким кадрам полезной нагрузки, например HEADERS, DATA и PUSH_PROMISE. Это поведение предыдущих версий. Это означает, что при определенных условиях наблюдатель за сетевым трафиком может видеть длину этих кадров в потоке TLS.

При настройке чисел от 1 до 8 к каждому кадру добавляется случайное число в диапазоне [0, 2^numbits[. Случайное значение выбирается независимо для каждого кадра, который модуль отправляет обратно клиенту.

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

Значение по умолчанию 0, т. е. без заполнения, было выбрано для максимальной совместимости с предыдущими версиями. Могут быть развертывания, в которых байты заполнения нежелательны или наносят вред. Наиболее вероятной причиной может быть клиент, у которого есть реализация сбоев.



Директива H2Push

Описание:Кнопочный переключатель сервера H2
Синтаксис: H2Push on|off
По умолчанию: H2Push on
Контекст:конфигурация сервера, виртуальный хост, каталог, .htaccess
Положение дел:Расширение
Модуль:mod_http2
Совместимость:Доступно в версии 2.4.18 и выше.

Эта директива переключает использование функции push-протокола сервера HTTP/2.

Протокол HTTP/2 позволяет серверу передавать клиенту другие ресурсы, когда он запрашивает определенный. Это полезно, если эти ресурсы каким-то образом связаны, и можно ожидать, что клиент все равно запросит их. Затем отправка экономит время, которое требуется клиенту, чтобы запросить ресурсы самостоятельно. С другой стороны, выталкивание ресурсов, которые клиенту никогда не нужны или которые уже есть, является пустой тратой полосы пропускания.

Отправки сервером обнаруживаются путем проверки Link заголовков ответов (см. https://tools.ietf.org/html/rfc5988 для спецификации). Когда ссылка, указанная таким образом, имеет rel=preload атрибут, она рассматривается как ресурс, который нужно отправить.

Заголовки ссылок в ответах либо устанавливаются приложением, либо могут быть настроены с помощью H2PushResource или с помощью mod_headers :

пример mod_headers

 <Местоположение /index.html>
 Заголовок добавить ссылку "</css/site.css>;rel=preload"
 Заголовок добавить ссылку "</images/logo.jpg>;rel=preload"
</местоположение> 

Как показывает пример, к ответу может быть добавлено несколько заголовков ссылок, что приведет к запуску нескольких push-уведомлений. В модуле нет проверок, чтобы избежать повторной отправки одного и того же ресурса одному клиенту. Используйте с осторожностью.

Отправка сервером HTTP/2 включена по умолчанию. На сервере или виртуальном хосте вы можете включить/отключить эту функцию для любого соединения с хостом. Кроме того, вы можете отключить PUSH для набора ресурсов в каталоге/местоположении. Это определяет, какие ресурсы могут вызвать PUSH, а не какие ресурсы могут быть отправлены через PUSH.

Пример

 H2Оттолкнуть 

И последнее, но не менее важное: толчки происходят только тогда, когда клиент сигнализирует о своей готовности принять их. Большинство браузеров поддерживают, некоторые, например Safari 9, — нет. Кроме того, отправка также происходит только для ресурсов из того же центра , для которого был исходный ответ.



Директива H2PushDiarySize

Описание:Размер дневника push-уведомлений сервера H2
Синтаксис: H2PushDiarySize n
По умолчанию: H2PushDiarySize 256
Контекст:конфигурация сервера, виртуальный хост
Положение дел:Расширение
Модуль:mod_http2
Совместимость:Доступно в версии 2.4.19 и выше.

Эта директива переключает максимальное количество отправок сервера HTTP/2, которые запоминаются для каждого соединения HTTP/2. Это можно использовать внутри <VirtualHost> раздела, чтобы повлиять на количество всех подключений к этому виртуальному хосту.

Дневник push-уведомлений записывает дайджест (в настоящее время используется 64-битное число) отправленных ресурсов (их URL), чтобы избежать повторных отправлений по одному и тому же соединению. Эти значения не сохраняются, поэтому клиенты, открывающие новое соединение, снова получат известные push-уведомления. В настоящее время ведется работа по предоставлению клиенту возможности раскрывать дайджест ресурсов, которые у него уже есть, поэтому дневник может инициализироваться клиентом при каждой установке соединения.

Если достигнут максимальный размер, новые записи заменяют самые старые. Запись в дневнике занимает 8 байт, поэтому дневник по умолчанию с 256 записями занимает около 2 КБ памяти.

Размер 0 эффективно отключает push-дневник.



Директива H2PushPriority

Описание:Приоритет отправки сервера H2
Синтаксис: H2PushPriority mime-type [after|before|interleaved] [weight]
По умолчанию: H2PushPriority * After 16
Контекст:конфигурация сервера, виртуальный хост
Положение дел:Расширение
Модуль:mod_http2
Совместимость:Доступно в версии 2.4.18 и выше. Для получения эффекта необходима библиотека nghttp2 версии 1.5.0 или новее.

Эта директива определяет приоритет обработки отправленных ответов на основе типа содержимого ответа. Обычно это определяется для конфигурации сервера, но также может отображаться в виртуальном хосте.

Отправка сервером HTTP/2 всегда связана с запросом клиента. Каждая такая пара запрос/ответ или потоки имеют зависимость и вес, вместе определяющие приоритет потока.

Когда поток зависит от другого, скажем, X зависит от Y, тогда Y получает всю пропускную способность до того, как X получит ее. Обратите внимание, что это не означает, что Y заблокирует X. Если у Y нет данных для отправки, вся полоса пропускания, выделенная Y, может быть использована X.

Когда поток имеет более одного зависимого, скажем, X1 и X2 зависят от Y, вес определяет распределение пропускной способности. Если X1 и X2 имеют одинаковый вес, они оба получают половину доступной полосы пропускания. Если вес X1 в два раза больше веса X2, X1 получает вдвое большую пропускную способность, чем X2.

В конечном счете, каждый поток зависит от корневого потока, который получает всю доступную полосу пропускания, но никогда ничего не отправляет. Таким образом, вся его пропускная способность распределяется по весу между его дочерними элементами. Которые либо имеют данные для отправки, либо распределяют пропускную способность своим детям. И так далее. Если ни у одного из дочерних элементов нет данных для отправки, эта полоса пропускания распределяется где-то еще в соответствии с теми же правилами.

Цель этой системы приоритетов состоит в том, чтобы всегда использовать доступную полосу пропускания, позволяя при этом придавать приоритет и вес определенным потокам. Поскольку обычно все потоки инициируются клиентом, именно он устанавливает эти приоритеты.

Только когда такой поток приводит к PUSH, сервер решает, каков первоначальный приоритет такого проталкиваемого потока. В приведенных ниже примерах X — это клиентский поток. Это зависит от Y, и сервер решает отправить потоки P1 и P2 на X.

Правило приоритета по умолчанию:

Правило приоритета по умолчанию

 H2PushPriority * После 16 

который читается как «Отправить проталкиваемый поток любого типа контента в зависимости от клиентского потока с весом 16». Таким образом, P1 и P2 будут отправляться после X и, поскольку они имеют одинаковый вес, поровну делят пропускную способность между собой.

Правило чередования приоритетов

 H2PushPriority text/css Interleaved 256 

который читается как «Отправить любой ресурс CSS с той же зависимостью и весом, что и клиентский поток». Если P1 имеет тип содержимого text/css, он будет зависеть от Y (как и X), и его эффективный вес будет рассчитываться как P1ew = Xw * (P1w / 256) . При значении P1w, равном 256, эффективный вес будет таким же, как вес X. Если и X, и P1 имеют данные для отправки, полоса пропускания будет распределена для обоих поровну.

При Pw, указанном как 512, проталкиваемый поток с чередованием получит вдвое больший вес, чем X. При 128 только вдвое меньше. Обратите внимание, что эффективные веса всегда ограничены значением 256.

До правила приоритета

 Приложение H2PushPriority/json До 

Это говорит о том, что любой отправленный поток контента типа «application/json» должен быть отправлен до X. Это делает P1 зависимым от Y, а X зависимым от P1. Таким образом, X будет остановлен, пока у P1 есть данные для отправки. Эффективный вес наследуется от клиентского потока. Запрещено указывать вес.

Имейте в виду, что действие спецификаций приоритета ограничено доступными ресурсами сервера. Если на сервере нет рабочих процессов, доступных для принудительных потоков, данные для потока могут поступать только тогда, когда другие потоки будут завершены.

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

  1. '*' — это единственный специальный тип контента, который соответствует всем остальным. 'изображение/*' не будет работать.
  2. Зависимость по умолчанию — «После».
  3. Также есть веса по умолчанию: для «После» это 16, для «чередования» — 256.

Более короткие правила приоритета

 H2PushPriority application/json 32 # правило After
H2PushPriority image/jpeg перед унаследованным весом #
H2PushPriority text/css чередуется # вес 256 по умолчанию 


Директива H2PushResource

Описание:Объявляет ресурсы для ранней отправки клиенту
Синтаксис: H2PushResource [add] path [critical]
Контекст:конфигурация сервера, виртуальный хост, каталог, .htaccess
Положение дел:Расширение
Модуль:mod_http2
Совместимость:Доступно в версии 2.4.24 и выше.

При добавлении в каталог/местоположение HTTP/2 PUSH будут предприняты для всех путей, добавленных с помощью этой директивы. Эту директиву можно использовать несколько раз для одного и того же местоположения.

Эта директива выталкивает ресурсы намного раньше, чем добавление Link заголовков через файлы mod_headers . mod_http2 объявляет об этих ресурсах в 103 Early Hints промежуточном ответе клиенту. Это означает, что клиенты, не поддерживающие PUSH, по-прежнему будут получать ранние подсказки предварительной загрузки.

В отличие от установки Link заголовков ответа через mod_headers , эта директива будет действовать только для соединений HTTP/2.

Добавляя critical к такому ресурсу, сервер отдает предпочтение его обработке и отправляет свои данные, как только они станут доступны, перед данными из основного запроса.



Директива H2SerializeHeaders

Описание:Переключатель обработки запроса/ответа сериализации
Синтаксис: H2SerializeHeaders on|off
По умолчанию: H2SerializeHeaders off
Контекст:конфигурация сервера, виртуальный хост
Положение дел:Расширение
Модуль:mod_http2

Эта директива переключает, должны ли запросы HTTP/2 сериализоваться в формате HTTP/1.1 для обработки ядром httpd или полученные двоичные данные должны передаваться request_rec непосредственно в s.

Сериализация снизит производительность, но даст больше обратной совместимости на случай, если это потребуется для пользовательских фильтров/перехватчиков.

Пример

 H2SerializeHeaders на 


Директива H2StreamMaxMemSize

Описание:Максимальный объем выходных данных, буферизуемых на поток.
Синтаксис: H2StreamMaxMemSize bytes
По умолчанию: H2StreamMaxMemSize 65536
Контекст:конфигурация сервера, виртуальный хост
Положение дел:Расширение
Модуль:mod_http2

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

Пример

 H2StreamMaxMemSize 128000 


Директива H2TLSCoolDownSecs

Описание:
Синтаксис: H2TLSCoolDownSecs seconds
По умолчанию: H2TLSCoolDownSecs 1
Контекст:конфигурация сервера, виртуальный хост
Положение дел:Расширение
Модуль:mod_http2
Совместимость:Доступно в версии 2.4.18 и выше.

Эта директива устанавливает количество секунд простоя соединения TLS, прежде чем размер записи TLS упадет до небольшой (~ 1300 байт) длины. Это можно использовать для всего сервера или для конкретных <VirtualHost> s.

См H2TLSWarmUpSize . описание прогрева TLS. H2TLSCoolDownSecs отражает тот факт, что соединения могут ухудшаться со временем (и поток TCP подстраивается) и для незанятых соединений. Для общей производительности полезно вернуться к фазе предварительного прогрева через несколько секунд, в течение которых данные не были отправлены.

В развертываниях, где соединения можно считать надежными, этот таймер можно отключить, установив для него значение 0.

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

Пример

 H2TLSCoolDownSecs 0 


Директива H2TLSWarmUpSize

Описание:
Синтаксис: H2TLSWarmUpSize amount
По умолчанию: H2TLSWarmUpSize 1048576
Контекст:конфигурация сервера, виртуальный хост
Положение дел:Расширение
Модуль:mod_http2
Совместимость:Доступно в версии 2.4.18 и выше.

Эта директива устанавливает количество байтов, которые должны быть отправлены в небольших записях TLS (~ 1300 байт), до тех пор, пока не будут выполнены записи максимального размера (16 КБ) для соединений https: HTTP/2. Это можно использовать для всего сервера или для конкретных <VirtualHost> s.

Измерения, проведенные лабораториями производительности Google, показывают, что наилучшая производительность при соединениях TLS достигается, если начальные размеры записей остаются ниже уровня MTU, чтобы полная запись могла поместиться в IP-пакет.

В то время как TCP настраивает управление потоком и размер окна, более длинные записи TLS могут застрять в очередях или потеряться и потребовать повторной передачи. Это, конечно, верно для всех пакетов. Однако для расшифровки TLS требуется вся запись. Любые отсутствующие байты в конце остановят использование полученных.

После успешной отправки достаточного количества байтов состояние TCP соединения становится стабильным, и для оптимальной производительности можно использовать максимальный размер записи TLS (16 КБ).

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

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

Пример

 H2TLSWarmUpSize 0 


Директива H2Upgrade

Описание:Переключатель протокола обновления H2
Синтаксис: H2Upgrade on|off
По умолчанию: H2Upgrade on for h2c, off for h2 protocol
Контекст:конфигурация сервера, виртуальный хост, каталог, .htaccess
Положение дел:Расширение
Модуль:mod_http2

Эта директива переключает использование метода обновления HTTP/1.1 для переключения на HTTP/2. Это следует использовать внутри <VirtualHost> раздела, чтобы включить обновление до HTTP/2 для этого виртуального хоста.

Этот метод переключения протоколов определен в HTTP/1.1 и использует заголовок «Upgrade» (отсюда и название), чтобы объявить о готовности использовать другой протокол. Это может произойти при любом запросе соединения HTTP/1.1.

Этот метод переключения протоколов включен по умолчанию для соединений с открытым текстом (потенциально h2c) и отключен для TLS (потенциально h2) в соответствии с требованиями RFC 7540.

Имейте в виду, что обновления принимаются только для запросов, не содержащих тела. Запросы POST и PUT с содержимым никогда не вызовут обновление до HTTP/2. См H2Direct . альтернативу Upgrade.

Этот режим действует только тогда, когда h2 или h2c включены через файл Protocols .

Пример

 H2Обновить 


Директива H2WindowSize

Описание:Размер окна потока для исходящих данных.
Синтаксис: H2WindowSize bytes
По умолчанию: H2WindowSize 65535
Контекст:конфигурация сервера, виртуальный хост
Положение дел:Расширение
Модуль:mod_http2

Эта директива устанавливает размер окна, используемого для управления потоком от клиента к серверу, и ограничивает объем данных, которые сервер должен буферизовать. Клиент прекратит отправку потока, как только будет достигнут предел, пока сервер не объявит о большем доступном пространстве (поскольку он обработал часть данных).

Это ограничение влияет только на тело запроса, но не на его метаданные, такие как заголовки. Кроме того, это не влияет на тела ответов, поскольку размер окна для них управляется клиентами.

Пример

 H2WindowSize 128000 


 <         > 

Пункты:   85    86    88    89    90    91    92    93    94    95    96    97    98    99    100    101    102    103    104    105    106    107    108    109    110    111    112    113    114    115    116    117    118    119    120    121    122    123    124    125    126    127    128    129    130    131    132    133    134    135    136    137    138    139    140    141    142    143    144    145    146      147      148    149    150    151    152    153    154    155    156    157    158    159    160    161    163    164    165    166    167    168    170    171    172    173    174    175    176    177    178    179    180    181    182    183    184    185    186    187    188    189    190    191    192    193    194    195    196    197    198    199    200    201    203    204    205    206    207    208    209    210    211    212    213  

Рейтинг@Mail.ru