* add Russian lang support --------- Co-authored-by: 风扇滑翔翼 <Fangliding.fshxy@outlook.com>
7.9 KiB
gRPC
Режим передачи данных, основанный на HTTP/2, полностью соответствует стандарту HTTP/2 и может быть ретранслирован другими HTTP-серверами (такими как Nginx).
gRPC (HTTP/2) имеет встроенное мультиплексирование, не рекомендуется включать mux.cool при использовании gRPC и HTTP/2.
::: warning ⚠⚠⚠
- gRPC не поддерживает указание Host. Пожалуйста, укажите правильное доменное имя в адресе исходящего прокси или укажите
ServerName
в(x)tlsSettings
, иначе подключение не будет установлено. - gRPC не поддерживает fallback на другие сервисы.
- Существует риск активного сканирования сервисов gRPC. Рекомендуется использовать обратный прокси-сервер, такой как Caddy или Nginx, для предварительного разделения трафика по пути. :::
::: tip Если вы используете обратный прокси-сервер, такой как Caddy или Nginx, обратите внимание на следующие моменты:
- Убедитесь, что на обратном прокси-сервере включен HTTP/2.
- Используйте HTTP/2 или h2c (Caddy), grpc_pass (Nginx) для подключения к Xray.
- Путь в обычном режиме:
/${serviceName}/Tun
, в режиме Multi:/${serviceName}/TunMulti
. - Если необходимо получать IP-адрес клиента, его можно передать через заголовок
X-Real-IP
, отправленный Caddy / Nginx. :::
::: tip Если вы используете fallback, обратите внимание на следующие моменты:
- Не рекомендуется использовать fallback на gRPC, так как существует риск активного сканирования.
- Убедитесь, что
h2
находится на первом месте в (x)tlsSettings.alpn, иначе gRPC (HTTP/2) может не завершить TLS-рукопожатие. - gRPC не поддерживает маршрутизацию на основе path с помощью Xray. :::
GRPCObject
GRPCObject
соответствует элементу grpcSettings
конфигурации передачи.
{
"authority": "grpc.example.com",
"serviceName": "name",
"multiMode": false,
"user_agent": "custom user agent",
"idle_timeout": 60,
"health_check_timeout": 20,
"permit_without_stream": false,
"initial_windows_size": 0
}
authority
: string
Строка, которая может использоваться как Host для реализации некоторых других целей.
serviceName
: string
Строка, указывающая имя сервиса, аналогично пути в HTTP/2. Клиент будет использовать это имя для связи, а сервер будет проверять, совпадает ли имя сервиса.
::: tip
Когда serviceName
начинается с косой черты, можно настроить собственный путь, используя как минимум две косые черты.
Например, если на сервере указано "serviceName": "/my/sample/path1|path2"
, то на клиенте можно указать "serviceName": "/my/sample/path1"
или "/my/sample/path2"
.
:::
user_agent
: string
::: tip
Необходимо настроить только в outbound
(клиент).
:::
Установка пользовательского агента gRPC, может предотвратить блокировку трафика gRPC некоторыми CDN.
multiMode
: true | false
true
включает multiMode
, значение по умолчанию: false
.
Это экспериментальная опция, которая может быть удалена в будущем, и ее совместимость между версиями не гарантируется. Этот режим может обеспечить прирост производительности примерно на 20% в тестовой среде, фактическая производительность зависит от скорости передачи.
::: tip
Необходимо настроить только в outbound
(клиент).
:::
idle_timeout
: number
Проверка работоспособности выполняется, если в течение определенного периода времени, измеряемого в секундах, не происходит передача данных. Если это значение меньше 10
, то в качестве минимального значения будет использоваться 10
.
::: tip
Если не используется обратный прокси-сервер, такой как Caddy или Nginx (обычно не используется), и это значение установлено меньше 60
, сервер может отправить непредвиденный кадр h2 GOAWAY, чтобы закрыть существующее соединение.
:::
По умолчанию проверка работоспособности отключена.
::: tip
Необходимо настроить только в outbound
(клиент).
:::
::: tip Может решить некоторые проблемы с "обрывом" соединения. :::
health_check_timeout
: number
Время ожидания ответа проверки работоспособности в секундах. Если в течение этого времени проверка работоспособности не будет завершена и по-прежнему не будет передачи данных, проверка работоспособности будет считаться неудачной. Значение по умолчанию: 20
.
::: tip Настройка требуется только на стороне исходящего соединения (клиента). :::
permit_without_stream
: true | false
true
разрешает проверку работоспособности, если нет дочерних подключений. Значение по умолчанию: false
.
::: tip
Необходимо настроить только в outbound
(клиент).
:::
initial_windows_size
: number
Начальный размер окна h2 Stream. Если значение меньше или равно 0
, эта функция не действует. Если значение больше 65535
, механизм динамического окна будет отключен. Значение по умолчанию: 0
, то есть не действует.
::: tip
Необходимо настроить только в outbound
(клиент).
:::
::: tip
При использовании CDN Cloudflare можно установить значение 65536
или выше, чтобы отключить механизм динамического окна, что предотвратит отправку непредвиденных кадров h2 GOAWAY CDN Cloudflare для закрытия существующего соединения.
:::