mirror of
https://github.com/XTLS/Xray-docs-next.git
synced 2025-01-20 09:41:41 +03:00
Rename h2 and tcp transport
This commit is contained in:
parent
4ad14fd7b5
commit
4cae0effb7
@ -64,9 +64,9 @@ export const sidebarZh: SidebarConfig = {
|
||||
text: '底层传输',
|
||||
children: [
|
||||
'/config/transports/grpc.md',
|
||||
'/config/transports/h2.md',
|
||||
'/config/transports/http.md',
|
||||
'/config/transports/mkcp.md',
|
||||
'/config/transports/tcp.md',
|
||||
'/config/transports/raw.md',
|
||||
'/config/transports/websocket.md',
|
||||
'/config/transports/httpupgrade.md',
|
||||
'/config/transports/splithttp.md'
|
||||
|
@ -41,9 +41,13 @@
|
||||
}
|
||||
```
|
||||
|
||||
> `network`: "tcp" | "ws" | "h2" | "grpc" | "kcp" | "httpupgrade" | "splithttp"
|
||||
> `network`: "raw" | "ws" | "h2" | "grpc" | "kcp" | "httpupgrade" | "splithttp"
|
||||
|
||||
连接的数据流所使用的传输方式类型,默认值为 `"tcp"`
|
||||
连接的数据流所使用的传输方式类型,默认值为 `"raw"`
|
||||
|
||||
::: tip
|
||||
v24.9.30 版本后,为了更贴近实际行为,tcp传输方式已更名为raw, 为了兼容性,`"network": "raw"` 和 "network": "tcp", `rawSettings`和`tcpSettings` 互为别名
|
||||
:::
|
||||
|
||||
::: tip
|
||||
"h2" 可以写成 "http","grpc" 可以写成 "gun","kcp" 可以写成 "mkcp"。
|
||||
@ -70,9 +74,9 @@ Reality 是目前最安全的传输加密方案, 且外部看来流量类型和
|
||||
达到数倍甚至十几倍的性能提升。
|
||||
:::
|
||||
|
||||
> `tcpSettings`: [TcpObject](./transports/tcp.md)
|
||||
> `rawSettings`: [TcpObject](./transports/raw.md)
|
||||
|
||||
当前连接的 TCP 配置,仅当此连接使用 TCP 时有效。
|
||||
当前连接的 raw 配置,仅当此连接使用 raw 时有效。
|
||||
|
||||
> `kcpSettings`: [KcpObject](./transports/mkcp.md)
|
||||
|
||||
@ -82,9 +86,9 @@ Reality 是目前最安全的传输加密方案, 且外部看来流量类型和
|
||||
|
||||
当前连接的 WebSocket 配置,仅当此连接使用 WebSocket 时有效。
|
||||
|
||||
> `httpSettings`: [HttpObject](./transports/h2.md)
|
||||
> `httpSettings`: [HttpObject](./transports/http.md)
|
||||
|
||||
当前连接的 HTTP/2 配置,仅当此连接使用 HTTP/2 时有效。
|
||||
当前连接的 HTTP 配置,仅当此连接使用 HTTP 时有效。
|
||||
|
||||
> `grpcSettings`: [GRPCObject](./transports/grpc.md)
|
||||
|
||||
|
@ -1,23 +1,24 @@
|
||||
# HTTP/2
|
||||
# HTTP
|
||||
|
||||
基于 HTTP/2 的传输方式。
|
||||
基于 HTTP/2 或 HTTP/3 的传输方式。
|
||||
|
||||
它完整按照 HTTP/2 标准实现,可以通过其它的 HTTP 服务器(如 Nginx)进行中转。
|
||||
它完整按照 HTTP 标准实现,可以通过其它的 HTTP 服务器(如 Nginx)进行中转。
|
||||
|
||||
由 HTTP/2 的建议,客户端和服务器必须同时开启 TLS 才可以正常使用这个传输方式。
|
||||
客户端必须开启 TLS 才可以正常使用这个传输方式。
|
||||
|
||||
HTTP/2 内置多路复用,不建议使用 HTTP/2 时启用 mux.cool。
|
||||
HTTP/2和3 内置多路复用,不建议使用时启用 mux.cool。
|
||||
|
||||
::: tip
|
||||
当前版本的 HTTP/2 的传输方式并不强制要求**入站**(**服务端**)有 TLS 配置.
|
||||
这使得可以在特殊用途的分流部署环境中,由外部网关组件完成 TLS 层对话,Xray 作为后端应用,网关和 Xray 间使用称为 `h2c` 的明文 http/2 进行通讯。
|
||||
这使得可以在特殊用途的分流部署环境中,由外部网关组件完成 TLS 层对话,Xray 作为后端应用,网关和 Xray 间使用明文HTTP进行通讯。
|
||||
:::
|
||||
|
||||
::: tip
|
||||
当alpn有且仅有 `h3` 时,该传输才会工作在h3模式。
|
||||
:::
|
||||
|
||||
::: warning
|
||||
⚠️ 如果你正在使用回落,请注意下列事项:
|
||||
|
||||
- 请确认 (x)tlsSettings.alpn 中包含 h2,否则 HTTP/2 无法完成 TLS 握手。
|
||||
- HTTP/2 无法通过 Path 进行分流,建议使用 SNI 分流。
|
||||
- HTTP/2 和 HTTP/3 无法通过xray的回落 Path 进行分流,不建议使用回落分流。
|
||||
:::
|
||||
|
||||
## HttpObject
|
148
docs/config/transports/raw.md
Normal file
148
docs/config/transports/raw.md
Normal file
@ -0,0 +1,148 @@
|
||||
# RAW
|
||||
|
||||
更名自曾经的tcp传输(原名称稍有歧义) RAW传输出站发送的原始数据,核心不使用其他协议(如 websocket)承载其流量。
|
||||
|
||||
可以和各种协议有多种组合模式.
|
||||
|
||||
## RawObject
|
||||
|
||||
`RawObject` 对应传输配置的 `rawSettings` 项。
|
||||
|
||||
```json
|
||||
{
|
||||
"acceptProxyProtocol": false,
|
||||
"header": {
|
||||
"type": "none"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
> `acceptProxyProtocol`: true | false
|
||||
|
||||
仅用于 inbound,指示是否接收 PROXY protocol。
|
||||
|
||||
[PROXY protocol](https://www.haproxy.org/download/2.2/doc/proxy-protocol.txt) 专用于传递请求的真实来源 IP 和端口,**若你不了解它,请先忽略该项**。
|
||||
|
||||
常见的反代软件(如 HAProxy、Nginx)都可以配置发送它,VLESS fallbacks xver 也可以发送它。
|
||||
|
||||
填写 `true` 时,最底层 TCP 连接建立后,请求方必须先发送 PROXY protocol v1 或 v2,否则连接会被关闭。
|
||||
|
||||
默认值为 `false`。
|
||||
|
||||
> `header`: [NoneHeaderObject](#noneheaderobject) | [HttpHeaderobject](#httpheaderobject)
|
||||
|
||||
数据包头部伪装设置,默认值为 `NoneHeaderObject`。
|
||||
|
||||
::: tip
|
||||
HTTP 伪装无法被其它 HTTP 服务器(如 Nginx)分流,但可以被 VLESS fallbacks path 分流。
|
||||
:::
|
||||
|
||||
### NoneHeaderObject
|
||||
|
||||
不进行伪装
|
||||
|
||||
```json
|
||||
{
|
||||
"type": "none"
|
||||
}
|
||||
```
|
||||
|
||||
> `type`: "none"
|
||||
|
||||
指定不进行伪装
|
||||
|
||||
### HttpHeaderObject
|
||||
|
||||
HTTP 伪装配置必须在对应的入站出站连接上同时配置,且内容必须一致。
|
||||
|
||||
```json
|
||||
{
|
||||
"type": "http",
|
||||
"request": {},
|
||||
"response": {}
|
||||
}
|
||||
```
|
||||
|
||||
> `type`: "http"
|
||||
|
||||
指定进行 HTTP 伪装
|
||||
|
||||
> `request`: [HTTPRequestObject](#httprequestobject)
|
||||
|
||||
HTTP 请求
|
||||
|
||||
> `response`: [HTTPResponseObject](#httpresponseobject)
|
||||
|
||||
HTTP 响应
|
||||
|
||||
#### HTTPRequestObject
|
||||
|
||||
```json
|
||||
{
|
||||
"version": "1.1",
|
||||
"method": "GET",
|
||||
"path": ["/"],
|
||||
"headers": {
|
||||
"Host": ["www.baidu.com", "www.bing.com"],
|
||||
"User-Agent": [
|
||||
"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36",
|
||||
"Mozilla/5.0 (iPhone; CPU iPhone OS 10_0_2 like Mac OS X) AppleWebKit/601.1 (KHTML, like Gecko) CriOS/53.0.2785.109 Mobile/14A456 Safari/601.1.46"
|
||||
],
|
||||
"Accept-Encoding": ["gzip, deflate"],
|
||||
"Connection": ["keep-alive"],
|
||||
"Pragma": "no-cache"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
> `version`: string
|
||||
|
||||
HTTP 版本,默认值为 `"1.1"`。
|
||||
|
||||
> `method`: string
|
||||
|
||||
HTTP 方法,默认值为 `"GET"`。
|
||||
|
||||
> `path`: \[ string \]
|
||||
|
||||
路径,一个字符串数组。默认值为 `["/"]`。当有多个值时,每次请求随机选择一个值。
|
||||
|
||||
> `headers`: map{ string, \[ string \]}
|
||||
|
||||
HTTP 头,一个键值对,每个键表示一个 HTTP 头的名称,对应的值是一个数组。
|
||||
|
||||
每次请求会附上所有的键,并随机选择一个对应的值。默认值见上方示例。
|
||||
|
||||
#### HTTPResponseObject
|
||||
|
||||
```json
|
||||
{
|
||||
"version": "1.1",
|
||||
"status": "200",
|
||||
"reason": "OK",
|
||||
"headers": {
|
||||
"Content-Type": ["application/octet-stream", "video/mpeg"],
|
||||
"Transfer-Encoding": ["chunked"],
|
||||
"Connection": ["keep-alive"],
|
||||
"Pragma": "no-cache"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
> `version`: string
|
||||
|
||||
HTTP 版本,默认值为 `"1.1"`。
|
||||
|
||||
> `status`: string
|
||||
|
||||
HTTP 状态,默认值为 `"200"`。
|
||||
|
||||
> `reason`: string
|
||||
|
||||
HTTP 状态说明,默认值为 `"OK"`。
|
||||
|
||||
> `headers`: map {string, \[ string \]}
|
||||
|
||||
HTTP 头,一个键值对,每个键表示一个 HTTP 头的名称,对应的值是一个数组。
|
||||
|
||||
每次请求会附上所有的键,并随机选择一个对应的值。默认值见上方示例。
|
@ -1,148 +1,3 @@
|
||||
# TCP
|
||||
|
||||
TCP 传输模式是目前推荐使用的传输模式之一.
|
||||
|
||||
可以和各种协议有多种组合模式.
|
||||
|
||||
## TcpObject
|
||||
|
||||
`TcpObject` 对应传输配置的 `tcpSettings` 项。
|
||||
|
||||
```json
|
||||
{
|
||||
"acceptProxyProtocol": false,
|
||||
"header": {
|
||||
"type": "none"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
> `acceptProxyProtocol`: true | false
|
||||
|
||||
仅用于 inbound,指示是否接收 PROXY protocol。
|
||||
|
||||
[PROXY protocol](https://www.haproxy.org/download/2.2/doc/proxy-protocol.txt) 专用于传递请求的真实来源 IP 和端口,**若你不了解它,请先忽略该项**。
|
||||
|
||||
常见的反代软件(如 HAProxy、Nginx)都可以配置发送它,VLESS fallbacks xver 也可以发送它。
|
||||
|
||||
填写 `true` 时,最底层 TCP 连接建立后,请求方必须先发送 PROXY protocol v1 或 v2,否则连接会被关闭。
|
||||
|
||||
默认值为 `false`。
|
||||
|
||||
> `header`: [NoneHeaderObject](#noneheaderobject) | [HttpHeaderobject](#httpheaderobject)
|
||||
|
||||
数据包头部伪装设置,默认值为 `NoneHeaderObject`。
|
||||
|
||||
::: tip
|
||||
HTTP 伪装无法被其它 HTTP 服务器(如 Nginx)分流,但可以被 VLESS fallbacks path 分流。
|
||||
:::
|
||||
|
||||
### NoneHeaderObject
|
||||
|
||||
不进行伪装
|
||||
|
||||
```json
|
||||
{
|
||||
"type": "none"
|
||||
}
|
||||
```
|
||||
|
||||
> `type`: "none"
|
||||
|
||||
指定不进行伪装
|
||||
|
||||
### HttpHeaderObject
|
||||
|
||||
HTTP 伪装配置必须在对应的入站出站连接上同时配置,且内容必须一致。
|
||||
|
||||
```json
|
||||
{
|
||||
"type": "http",
|
||||
"request": {},
|
||||
"response": {}
|
||||
}
|
||||
```
|
||||
|
||||
> `type`: "http"
|
||||
|
||||
指定进行 HTTP 伪装
|
||||
|
||||
> `request`: [HTTPRequestObject](#httprequestobject)
|
||||
|
||||
HTTP 请求
|
||||
|
||||
> `response`: [HTTPResponseObject](#httpresponseobject)
|
||||
|
||||
HTTP 响应
|
||||
|
||||
#### HTTPRequestObject
|
||||
|
||||
```json
|
||||
{
|
||||
"version": "1.1",
|
||||
"method": "GET",
|
||||
"path": ["/"],
|
||||
"headers": {
|
||||
"Host": ["www.baidu.com", "www.bing.com"],
|
||||
"User-Agent": [
|
||||
"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36",
|
||||
"Mozilla/5.0 (iPhone; CPU iPhone OS 10_0_2 like Mac OS X) AppleWebKit/601.1 (KHTML, like Gecko) CriOS/53.0.2785.109 Mobile/14A456 Safari/601.1.46"
|
||||
],
|
||||
"Accept-Encoding": ["gzip, deflate"],
|
||||
"Connection": ["keep-alive"],
|
||||
"Pragma": "no-cache"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
> `version`: string
|
||||
|
||||
HTTP 版本,默认值为 `"1.1"`。
|
||||
|
||||
> `method`: string
|
||||
|
||||
HTTP 方法,默认值为 `"GET"`。
|
||||
|
||||
> `path`: \[ string \]
|
||||
|
||||
路径,一个字符串数组。默认值为 `["/"]`。当有多个值时,每次请求随机选择一个值。
|
||||
|
||||
> `headers`: map{ string, \[ string \]}
|
||||
|
||||
HTTP 头,一个键值对,每个键表示一个 HTTP 头的名称,对应的值是一个数组。
|
||||
|
||||
每次请求会附上所有的键,并随机选择一个对应的值。默认值见上方示例。
|
||||
|
||||
#### HTTPResponseObject
|
||||
|
||||
```json
|
||||
{
|
||||
"version": "1.1",
|
||||
"status": "200",
|
||||
"reason": "OK",
|
||||
"headers": {
|
||||
"Content-Type": ["application/octet-stream", "video/mpeg"],
|
||||
"Transfer-Encoding": ["chunked"],
|
||||
"Connection": ["keep-alive"],
|
||||
"Pragma": "no-cache"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
> `version`: string
|
||||
|
||||
HTTP 版本,默认值为 `"1.1"`。
|
||||
|
||||
> `status`: string
|
||||
|
||||
HTTP 状态,默认值为 `"200"`。
|
||||
|
||||
> `reason`: string
|
||||
|
||||
HTTP 状态说明,默认值为 `"OK"`。
|
||||
|
||||
> `headers`: map {string, \[ string \]}
|
||||
|
||||
HTTP 头,一个键值对,每个键表示一个 HTTP 头的名称,对应的值是一个数组。
|
||||
|
||||
每次请求会附上所有的键,并随机选择一个对应的值。默认值见上方示例。
|
||||
v24.9.30 版本后,为了更贴近实际行为,tcp传输方式已更名为[raw](./raw.md), 为了兼容性,`"network": "raw"` 和 "network": "tcp", `rawSettings`和`tcpSettings` 互为别名
|
Loading…
x
Reference in New Issue
Block a user