Warning

This translation was modified on 16 July 2024 and an updated version (29 July 2024) is available on the source page. View the original page

HTTP/2

Способ передачи данных на основе HTTP/2.

Он полностью реализован в соответствии со стандартом HTTP/2 и может быть перенаправлен через другие HTTP-серверы (например, Nginx).

В соответствии с рекомендациями HTTP/2, клиент и сервер должны одновременно включать TLS для нормальной работы этого способа передачи.

HTTP/2 имеет встроенное мультиплексирование, не рекомендуется включать mux.cool при использовании HTTP/2.

Подсказка

Текущая версия способа передачи HTTP/2 не требует, чтобы входящее соединение (сервер) имело конфигурацию TLS. Это позволяет в среде развертывания с разделением трафика для специальных целей использовать внешний шлюз для обработки TLS-соединения, в то время как Xray будет использоваться в качестве серверного приложения, а связь между шлюзом и Xray будет осуществляться по незашифрованному протоколу http/2, который называется h2c.

Внимание

⚠️ Если вы используете fallback, обратите внимание на следующие моменты:

  • Убедитесь, что (x)tlsSettings.alpn содержит h2, иначе HTTP/2 не сможет завершить TLS-рукопожатие.
  • HTTP/2 не может быть разделен по пути, рекомендуется использовать SNI-разделение.

HttpObject

HttpObject соответствует элементу httpSettings конфигурации передачи.

{
  "host": ["xray.com"],
  "path": "/random/path",
  "read_idle_timeout": 10,
  "health_check_timeout": 15,
  "method": "PUT",
  "headers": {
    "Header": ["value"]
  }
}

host: [string]

Массив строк, каждый элемент которого является доменным именем.

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

Подсказка

Если не указать "httpSettings" или оставить значение "host": [] пустым, то будет использоваться значение по умолчанию "www.example.com". Для успешного подключения значение "host" должно быть одинаковым на обеих сторонах. "host": [""] не является пустым значением.

path: string

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

Значение по умолчанию: "/".

read_idle_timeout: number

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

По умолчанию проверка работоспособности не включена.

Подсказка

Настройка требуется только на стороне исходящего соединения (клиента).

Подсказка

Может решить некоторые проблемы с "обрывом" соединения.

health_check_timeout: number

Время ожидания ответа проверки работоспособности в секундах. Если в течение этого времени проверка работоспособности не будет завершена, она будет считаться неудачной. Значение по умолчанию: 15.

Подсказка

Настройка требуется только на стороне исходящего соединения (клиента).

method: string

HTTP-метод. Значение по умолчанию: "PUT".

При настройке следует использовать значения, перечисленные здесьОткрыть в новой вкладке.

headers: map{ string: [string] }

Пользовательские HTTP-заголовки, пара ключ-значение, где каждый ключ представляет собой имя HTTP-заголовка, а значение представляет собой массив.