2021-03-16 15:57:15 +00:00
|
|
|
|
# HTTP/2
|
2021-03-15 15:59:11 +00:00
|
|
|
|
|
|
|
|
|
基于 HTTP/2 的传输方式。
|
|
|
|
|
|
|
|
|
|
它完整按照 HTTP/2 标准实现,可以通过其它的 HTTP 服务器(如 Nginx)进行中转。
|
|
|
|
|
|
|
|
|
|
由 HTTP/2 的建议,客户端和服务器必须同时开启 TLS 才可以正常使用这个传输方式。
|
|
|
|
|
|
2021-03-16 15:57:15 +00:00
|
|
|
|
HTTP/2 内置多路复用,不建议使用 HTTP/2 时启用 mux.cool。
|
|
|
|
|
|
2021-03-15 15:59:11 +00:00
|
|
|
|
::: tip
|
2022-08-07 04:57:55 +00:00
|
|
|
|
当前版本的 HTTP/2 的传输方式并不强制要求**入站**(**服务端**)有 TLS 配置.
|
2021-03-15 15:59:11 +00:00
|
|
|
|
这使得可以在特殊用途的分流部署环境中,由外部网关组件完成 TLS 层对话,Xray 作为后端应用,网关和 Xray 间使用称为 `h2c` 的明文 http/2 进行通讯。
|
2021-03-16 15:57:15 +00:00
|
|
|
|
:::
|
2021-03-15 15:59:11 +00:00
|
|
|
|
|
2021-03-16 15:57:15 +00:00
|
|
|
|
::: warning
|
|
|
|
|
⚠️ 如果你正在使用回落,请注意下列事项:
|
2021-03-26 06:01:07 +00:00
|
|
|
|
|
2021-03-16 15:57:15 +00:00
|
|
|
|
- 请确认 (x)tlsSettings.alpn 中包含 h2,否则 HTTP/2 无法完成 TLS 握手。
|
2023-03-20 14:41:43 +00:00
|
|
|
|
- HTTP/2 无法通过 Path 进行分流,建议使用 SNI 分流。
|
2021-03-26 06:01:07 +00:00
|
|
|
|
:::
|
2021-03-15 15:59:11 +00:00
|
|
|
|
|
|
|
|
|
## HttpObject
|
|
|
|
|
|
|
|
|
|
`HttpObject` 对应传输配置的 `httpSettings` 项。
|
|
|
|
|
|
|
|
|
|
```json
|
|
|
|
|
{
|
|
|
|
|
"host": ["xray.com"],
|
2021-09-29 17:13:53 +00:00
|
|
|
|
"path": "/random/path",
|
|
|
|
|
"read_idle_timeout": 10,
|
2022-06-21 02:16:41 +00:00
|
|
|
|
"health_check_timeout": 15,
|
|
|
|
|
"method": "PUT",
|
|
|
|
|
"headers": {
|
|
|
|
|
"Header": ["value"]
|
|
|
|
|
}
|
2021-03-15 15:59:11 +00:00
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
> `host`: \[string\]
|
|
|
|
|
|
|
|
|
|
一个字符串数组,每一个元素是一个域名。
|
|
|
|
|
|
|
|
|
|
客户端会随机从列表中选出一个域名进行通信,服务器会验证域名是否在列表中。
|
|
|
|
|
|
2022-06-21 02:16:41 +00:00
|
|
|
|
> `path`: string
|
2021-03-15 15:59:11 +00:00
|
|
|
|
|
|
|
|
|
HTTP 路径,由 `/` 开头, 客户端和服务器必须一致。
|
|
|
|
|
|
|
|
|
|
默认值为 `"/"`。
|
2021-09-29 17:13:53 +00:00
|
|
|
|
|
2022-06-21 02:16:41 +00:00
|
|
|
|
> `read_idle_timeout`: number
|
2021-09-29 17:13:53 +00:00
|
|
|
|
|
|
|
|
|
单位秒,当这段时间内没有接收到数据时,将会进行健康检查。
|
|
|
|
|
|
|
|
|
|
健康检查默认**不启用**。
|
|
|
|
|
|
2022-08-07 04:57:55 +00:00
|
|
|
|
::: tip
|
|
|
|
|
**只需**在**出站**(**客户端**)配置。
|
|
|
|
|
:::
|
|
|
|
|
|
|
|
|
|
::: tip
|
|
|
|
|
可能会解决一些“断流”问题。
|
|
|
|
|
:::
|
2021-09-29 17:13:53 +00:00
|
|
|
|
|
2022-06-21 02:16:41 +00:00
|
|
|
|
> `health_check_timeout`: number
|
2021-09-29 17:13:53 +00:00
|
|
|
|
|
|
|
|
|
单位秒,健康检查的超时时间。如果在这段时间内没有完成健康检查,即认为健康检查失败。默认值为 `15`。
|
2022-06-21 02:16:41 +00:00
|
|
|
|
|
2022-08-07 04:57:55 +00:00
|
|
|
|
::: tip
|
|
|
|
|
**只需**在**出站**(**客户端**)配置。
|
|
|
|
|
:::
|
|
|
|
|
|
2022-06-21 02:16:41 +00:00
|
|
|
|
> `method`: string
|
|
|
|
|
|
|
|
|
|
HTTP 方法。默认值为 `"PUT"`。
|
|
|
|
|
|
|
|
|
|
设置时应参照[此处](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods)列出值。
|
|
|
|
|
|
|
|
|
|
> `headers`: map{ string: \[string\] }
|
|
|
|
|
|
|
|
|
|
自定义 HTTP 头,一个键值对,每个键表示一个 HTTP 头名称,对应值为一个数组。
|