HTTPUpgrade
Что это
HTTPUpgrade — транспорт для Xray, добавленный в конце 2023 года. Как WebSocket, но без WS-фрейминга — после HTTP Upgrade идёт сырой TCP-поток. Проще, чуть быстрее, легче.
Как отличается от WebSocket
Оба используют механизм HTTP Upgrade — клиент шлёт Connection: Upgrade, Upgrade: websocket (или любой другой), сервер отвечает 101 Switching Protocols, и дальше идёт другой протокол.
| WebSocket | HTTPUpgrade | |
|---|---|---|
| Upgrade к чему | websocket | любое имя (обычно websocket для маскировки) |
| Фрейминг после upgrade | WS-frames (opcode, mask, length, payload) | сырой TCP-поток |
| Overhead на кадр | 2-14 байт | 0 |
| Sec-WebSocket-Key/Accept | обязателен | опционально |
| Client masking | обязателен | нет |
| Год | 2011 | 2023 |
Зачем это нужно
WS-фрейминг был спроектирован под браузеры, где важна безопасность (masking предотвращает cache poisoning атаки). Но в прокси-контексте:
- Клиент и сервер оба свои — masking бесполезен
- Данные и так шифрованы TLS — WS-frame length избыточен
- Каждый фрейм = лишние байты в трафике
HTTPUpgrade убирает эти издержки, оставляя только сам handshake.
Конфиг в Xray
"streamSettings": {
"network": "httpupgrade",
"security": "tls",
"tlsSettings": {
"serverName": "your.domain.com"
},
"httpupgradeSettings": {
"path": "/live",
"host": "your.domain.com"
}
}
Работа через CDN
HTTPUpgrade работает через Cloudflare, Fastly, любой HTTP-CDN. Так же как WebSocket. CDN не различает — там или там upgrade.
Ситуация в 2026
HTTPUpgrade — компромисс между WS (проверенный) и xHTTP (новый гибкий). Если ты хочешь просто минимальный overhead и работу через CDN — HTTPUpgrade достаточен. Если нужны навороты (HTTP/2 multiplexing, HTTP/3, packet-up mode) — xHTTP.