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

HTTPUpgrade

Это протокол, реализующий запросы и ответы на обновление HTTP 1.1, подобно WebSocket. Это позволяет ему, как и WebSocket, быть проксируемым CDN или Nginx, но без необходимости реализации других частей протокола WebSocket, что делает его более эффективным.

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

HttpUpgradeObject

HttpUpgradeObject соответствует пункту httpupgradeSettings в настройках передачи.

{
  "acceptProxyProtocol": false,
  "path": "/",
  "host": "xray.com",
  "headers": {
    "key": "value"
  }
}

acceptProxyProtocol: true | false

Используется только для входящих соединений и указывает, принимать ли протокол PROXY.

PROXY protocolОткрыть в новой вкладке предназначен для передачи реального IP-адреса и порта запроса. Если вы не знакомы с ним, проигнорируйте этот пункт.

Распространенные программы для reverse прокси (например, HAProxy, Nginx) и VLESS fallbacks xver могут быть настроены для его включения.

При установке значения true, после установления TCP-соединения на самом нижнем уровне, запрашивающая сторона должна сначала отправить PROXY protocol v1 или v2, в противном случае соединение будет закрыто.

path: string

HTTP-путь, используемый HTTPUpgrade, по умолчанию "/".

Если в пути клиента содержится параметр ed (например, /mypath?ed=2560), будет активирована функция Early Data для уменьшения задержки, ее значение - порог длины первого пакета. Если длина первого пакета превышает это значение, Early Data не будет активирована. Рекомендуемое значение - 2560.

host: string

Хост, отправляемый в HTTP-запросе HTTPUpgrade, по умолчанию пустой. Если значение на стороне сервера пустое, значение хоста, отправляемое клиентом, не проверяется.

Когда на стороне сервера указано это значение или в headers указан хост, будет проверено соответствие хоста запроса клиента.

Приоритет выбора хоста, отправляемого клиентом: host > headers > address

headers: map {string: string}

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

По умолчанию пустое.