Xray-docs-next/docs/config/transports/grpc.md

49 lines
1.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# gRPC
基于 gRPC 的传输方式。
它基于 HTTP/2 协议,理论上可以通过其它支持 HTTP/2 的服务器(如 Nginx进行中转。
gRPCHTTP/2内置多路复用不建议使用 gRPC 与 HTTP/2 时启用 mux.cool。
::: warning ⚠⚠⚠
- 目前gRPC 不支持指定 serverName (即 Websocket 与 HTTP/2 的 host).请在出站代理地址中填写 **正确的域名** ,或在 `(x)tlsSettings` 中填写 `ServerName` 否则无法连接。
- gRPC 不支持回落到其他服务。
- gRPC 服务有明显特征,无法抵抗主动探测。建议使用 Caddy 或 Nginx通过 Path 前置分流。
:::
::: tip
如果您使用 Caddy 或 Nginx 等反向代理,请注意下列事项:
- 请确定反向代理服务器开启了 HTTP/2
- 请使用 HTTP/2 或 h2c (Caddy)grpc_pass (Nginx) 连接到 Xray。
- 普通模式的 Path 为 `/{serviceName}/Tun`, Multi 模式为 `/{serviceName}/TunMulti`
:::
::: tip
如果你正在使用回落,请注意下列事项:
- 请确认 (x)tlsSettings.alpn 中 h2 位于第一顺位,否则 gRPCHTTP/2可能无法完成 TLS 握手。
- gRPC 无法通过进行 Path 分流。
- 不建议回落到 gRPC存在主动探测的风险。
:::
## GRPCObject
`GRPCObject` 对应传输配置的 `grpcSettings` 项。
```json
{
"serviceName": "name",
"multiMode": false
}
```
> `serviceName`: string
一个字符串,指定服务路径,**类似于** HTTP/2 与 WebSocket 中的 Path。
客户端会使用此名称进行通信,服务器会验证服务名称是否匹配。
> `multiMode`: bool <Badge text="BETA" type="warning"/>
一个布尔值。表示是否启用 `multiMode`
这是一个 **实验性** 选项,可能不会被长期保留,也不保证跨版本兼容。此模式在 **测试环境中** 能够带来约 20% 的性能提升,实际效果因传输速率不同而不同。