Skip to content

Commit 6c30069

Browse files
author
rp-hello
committed
xhttp docs
1 parent 83fb6d4 commit 6c30069

File tree

2 files changed

+134
-4
lines changed

2 files changed

+134
-4
lines changed

docs/config/transport.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ Reality 是目前最安全的传输加密方案, 且外部看来流量类型和
7474
7575
当前连接的 RAW 配置,仅当此连接使用 RAW 时有效。
7676

77-
> `xhttpSettings`: [XHTTP: Beyond REALITY](https://github.com/XTLS/Xray-core/discussions/4113)
77+
> `xhttpSettings`: [XHTTPObject](./transports/xhttp.md)
7878
7979
当前连接的 XHTTP 配置,仅当此连接使用 XHTTP 时有效。
8080

@@ -234,7 +234,7 @@ CipherSuites 用于配置受支持的密码套件列表, 每个套件名称之
234234

235235
> `pinnedPeerCertSha256`: string
236236
237-
用于指定远程服务器的证书 SHA256 散列值,使用 hex 且大小写不敏感。如 `e8e2d387fdbffeb38e9c9065cf30a97ee23c0e3d32ee6f78ffae40966befccc9`. 该编码与 Chrome 证书查看器 SHA-256 证书指纹,以及 crt.sh 的 Certificate Fingerprints SHA-256 格式均相同。也可以使用 `xray tls leafCertHash --cert <cert.pem>` 进行计算。可以使用 `~` 连接更多的散列值,匹配到任何一个即通过验证。
237+
用于指定远程服务器的证书 SHA256 散列值,使用 hex 且大小写不敏感。如 `e8e2d387fdbffeb38e9c9065cf30a97ee23c0e3d32ee6f78ffae40966befccc9`. 该编码与 Chrome 证书查看器 SHA-256 证书指纹,以及 crt.sh 的 Certificate Fingerprints SHA-256 格式均相同。也可以使用 `xray tls leafCertHash --cert <cert.pem>` 进行计算。可以使用 `~` 连接更多的散列值,匹配到任何一个即通过验证。
238238

239239
该验证在正常证书验证成功后才会调用,分为两种情况。
240240

docs/config/transports/xhttp.md

Lines changed: 132 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,133 @@
1-
# XHTTP: Beyond REALITY
1+
# XHTTP
2+
3+
基于 HTTP 的高可拓展性传输协议,主要用于在 CDN 或反代环境下,将代理流量伪装成标准网页浏览流量以实现高效穿透。
4+
5+
See [XHTTP: Beyond REALITY](https://github.com/XTLS/Xray-core/discussions/4113)
6+
7+
## XHTTPObject
8+
9+
`XHTTPObject` 对应传输配置的 `xhttpSettings` 项。
10+
11+
```json
12+
{
13+
"path": "/xhttp",
14+
"mode": "auto",
15+
"extra": {
16+
"noSSEHeader": false,
17+
"scMaxEachPostBytes": 1000000,
18+
"scMaxBufferedPosts": 30,
19+
"xPaddingBytes": "10-100"
20+
}
21+
}
22+
```
23+
24+
> `path`: string
25+
26+
XHTTP 所使用的 HTTP 协议路径前缀。
27+
28+
最终请求为`GET /yourpath/sameUUID`(上行),`POST /yourpath/sameUUID/seq`(下行)。
29+
30+
> `mode`: "auto" | "packet-up" | "stream-up" | "stream-one"
31+
32+
XHTTP使用的模式,默认为`"auto"`
33+
34+
> `host`: string
35+
36+
XHTTP 的HTTP请求中所发送的host,默认值为空。若服务端值为空时,不验证客户端发送来的host值。
37+
38+
当在服务端指定该值,或在 `headers` 中指定host,将会校验与客户端请求host是否一致。
39+
40+
客户端选择发送的host优先级 `host` > `headers` > `address`
41+
42+
> `headers`: map \{string: string\}
43+
44+
仅客户端,自定义 HTTP 头,一个键值对,每个键表示一个 HTTP 头的名称,对应的值是字符串。
45+
46+
不可在此处设置host header。
47+
48+
默认值为空。
49+
50+
> `scStreamUpServerSecs`: string
51+
52+
[Int32Range](../../development/intro/guide.md#int32range)类型。
53+
54+
仅客户端,测试发现 CF 会掐断下行 100 秒无实际数据的 HTTP,导致 stream-up 的上行方向被掐断,所以为服务端添加了 scStreamUpServerSecs,默认值 "20-80" 取随机。
55+
56+
设置为-1则关闭此机制。
57+
58+
> `xPaddingBytes`: string
59+
60+
[Int32Range](../../development/intro/guide.md#int32range)类型。
61+
62+
服务端每隔 scStreamUpServerSecs 时间就会发 xPaddingBytes 个字节以保活
63+
64+
> `noGRPCHeader`: bool
65+
66+
仅客户端,
67+
68+
false: 上行均默认有 `Content-Type: application/grpc` 以伪装成 gRPC
69+
true: 关闭上述行为
70+
71+
> `noSSEHeader`: bool
72+
73+
仅服务端,
74+
75+
false: 下行的服务端响应头会包含`Content-Type: text/event-stream`,以伪装为SSE。
76+
true: 关闭上述行为。
77+
78+
> `scMaxEachPostBytes`: string
79+
80+
[Int32Range](../../development/intro/guide.md#int32range)类型。
81+
82+
客户端每个 POST 最多携带多少数据,默认值 1000000 即 1MB,该值应小于 CDN 等 HTTP 中间盒所允许的最大值,服务端也会拒绝大于该值的 POST
83+
84+
> `scMinPostsIntervalMs`: string
85+
86+
[Int32Range](../../development/intro/guide.md#int32range)类型。
87+
88+
仅客户端,基于单个代理请求,客户端发起 POST 请求的最小间隔,默认值 30 毫秒
89+
90+
> `scMaxBufferedPosts`: int64
91+
92+
仅服务端,基于单个代理请求,服务端最多缓存多少个 POST 请求,默认值 30 个,超限断连
93+
94+
> `xmux`: \[ [XmuxObject](#xmuxobject) \]
95+
96+
仅客户端,
97+
98+
> `downloadSettings`: \[ [StreamSettingsObject](../transport.md#streamsettingsobject) \]
99+
100+
可以对下行流量进行单独配置,比如更换域名等。
101+
102+
> `extra`: json object
103+
104+
`extra``host``path``mode` 以外的所有参数的原始 JSON,当 extra 存在时,只有该四项会生效。
105+
106+
## XmuxObject
107+
108+
多路复用配置。
109+
110+
> maxConcurrency: [Int32Range](../../development/intro/guide.md#int32range)
111+
112+
每条 H2/H3 连接中最多同时存在的代理请求数量,超出后会建立新的连接
113+
114+
> maxConnections: [Int32Range](../../development/intro/guide.md#int32range)
115+
116+
同时存在的连接数。 0 为不限制。
117+
118+
> cMaxReuseTimes: [Int32Range](../../development/intro/guide.md#int32range)
119+
120+
每条连接最多被复用的次数
121+
122+
> cMaxLifetimeMs: [Int32Range](../../development/intro/guide.md#int32range)
123+
124+
每条连接的存活时间。 0 为不限制。
125+
126+
> hMaxRequestTimes: [Int32Range](../../development/intro/guide.md#int32range)
127+
128+
每条连接最多承载多少个请求。
129+
130+
> hKeepAlivePeriod: int64
131+
132+
H2/H3 连接空闲时客户端每隔多少秒发一次保活包,默认 0,即 Chrome H2 的 45 秒,或 quic-go H3 的 10 秒
2133

3-
See [XHTTP: Beyond REALITY](https://github.com/XTLS/Xray-core/discussions/4113)

0 commit comments

Comments
 (0)