diff --git a/docs/ru/config/transports/h2.md b/docs/ru/config/transports/h2.md new file mode 100644 index 0000000..92a9d9a --- /dev/null +++ b/docs/ru/config/transports/h2.md @@ -0,0 +1,86 @@ +# HTTP/2 + +Способ передачи данных на основе HTTP/2. + +Он полностью реализован в соответствии со стандартом HTTP/2 и может быть перенаправлен через другие HTTP-серверы (например, Nginx). + +В соответствии с рекомендациями HTTP/2, клиент и сервер должны одновременно включать TLS для нормальной работы этого способа передачи. + +HTTP/2 имеет встроенное мультиплексирование, не рекомендуется включать mux.cool при использовании HTTP/2. + +::: tip +Текущая версия способа передачи HTTP/2 **не требует**, чтобы **входящее соединение** (**сервер**) имело конфигурацию TLS. +Это позволяет в среде развертывания с разделением трафика для специальных целей использовать внешний шлюз для обработки TLS-соединения, в то время как Xray будет использоваться в качестве серверного приложения, а связь между шлюзом и Xray будет осуществляться по незашифрованному протоколу http/2, который называется `h2c`. +::: + +::: warning +⚠️ Если вы используете fallback, обратите внимание на следующие моменты: + +- Убедитесь, что (x)tlsSettings.alpn содержит h2, иначе HTTP/2 не сможет завершить TLS-рукопожатие. +- HTTP/2 не может быть разделен по пути, рекомендуется использовать SNI-разделение. + ::: + +## HttpObject + +`HttpObject` соответствует элементу `httpSettings` конфигурации передачи. + +```json +{ + "host": ["xray.com"], + "path": "/random/path", + "read_idle_timeout": 10, + "health_check_timeout": 15, + "method": "PUT", + "headers": { + "Header": ["value"] + } +} +``` + +> `host`: \[string\] + +Массив строк, каждый элемент которого является доменным именем. + +Клиент будет случайным образом выбирать доменное имя из списка для связи, а сервер будет проверять, находится ли доменное имя в списке. + +::: tip +Если не указать `"httpSettings"` или оставить значение `"host": []` пустым, то будет использоваться значение по умолчанию `"www.example.com"`. Для успешного подключения значение `"host"` должно быть одинаковым на обеих сторонах. `"host": [""]` не является пустым значением. +::: + +> `path`: string + +HTTP-путь, начинающийся с `/`, должен быть одинаковым у клиента и сервера. + +Значение по умолчанию: `"/"`. + +> `read_idle_timeout`: number + +Время в секундах, по истечении которого, если данные не были получены, будет выполнена проверка работоспособности. + +По умолчанию проверка работоспособности **не включена**. + +::: tip +Настройка требуется **только** на стороне **исходящего соединения** (**клиента**). +::: + +::: tip +Может решить некоторые проблемы с "обрывом" соединения. +::: + +> `health_check_timeout`: number + +Время ожидания ответа проверки работоспособности в секундах. Если в течение этого времени проверка работоспособности не будет завершена, она будет считаться неудачной. Значение по умолчанию: `15`. + +::: tip +Настройка требуется **только** на стороне **исходящего соединения** (**клиента**). +::: + +> `method`: string + +HTTP-метод. Значение по умолчанию: `"PUT"`. + +При настройке следует использовать значения, перечисленные [здесь](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods). + +> `headers`: map{ string: \[string\] } + +Пользовательские HTTP-заголовки, пара ключ-значение, где каждый ключ представляет собой имя HTTP-заголовка, а значение представляет собой массив.