Nikita Korotaev 3b23ce3ea2
add Russian lang (#529)
* add Russian lang support
---------

Co-authored-by: 风扇滑翔翼 <Fangliding.fshxy@outlook.com>
2024-07-16 22:42:05 +08:00

127 lines
7.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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` конфигурации передачи.
```json
{
"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` начинается с косой черты, можно настроить собственный путь, используя как минимум две косые черты.<br>
Например, если на сервере указано `"serviceName": "/my/sample/path1|path2"`, то на клиенте можно указать `"serviceName": "/my/sample/path1"` или `"/my/sample/path2"`.
:::
> `user_agent`: string
::: tip
**Необходимо настроить только** в `outbound` **(клиент)**.
:::
Установка пользовательского агента gRPC, может предотвратить блокировку трафика gRPC некоторыми CDN.
> `multiMode`: true | false <Badge text="BETA" type="warning"/>
`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 для закрытия существующего соединения.
:::