3x-ui配置XHTTP节点:搭配Reality怎么设置
面板部分假设已经按3x-ui安装教程装好,Reality 基础配置(dest、serverName、密钥生成)可以参考3x-ui配置VLESS Reality节点教程,这篇不重复讲那部分,只讲多出来的 XHTTP 传输层怎么配。
XHTTP 是 Xray-core 里比较新的一种传输方式,思路跟裸 TCP 不一样:裸 TCP + Reality 靠一条长时间维持的加密连接伪装成真实网站的 TLS 握手,本身这种"长连接、稳定时序"的流量模式也是可以被统计分析盯上的特征;XHTTP 换了个思路,把代理流量拆成一个个真实的 HTTP 请求(能流式收发数据,不会牺牲下行速率),行为上更接近正常的网页浏览或者文件下载,同时天然支持套 CDN。
新建入站,协议和安全层照常配
进入面板入站列表,点添加入站,协议选 VLESS,安全选项选 Reality,dest、serverName、shortId、publicKey/privateKey 这些照 VLESS Reality教程 里的方法填就行,这部分两种传输方式共用,没有区别。
Transport 选 XHTTP
关键的区别在**传输方式(Transport)**这一栏,默认是 RAW(也就是裸 TCP),改选 XHTTP。
XHTTP 的配置项看着不少,但官方文档原话是"一般来说 XHTTP 配置只需填 path,其它不填即可"——大部分场景真不需要动额外参数:
- path:自定义一段不好猜的字符串,比如
/a1b2c3-xh,不要用默认的/。 - host:留空即可,面板会自动处理,非要自定义 Host 头的场景才需要填。
- 其余的
xPaddingBytes(包大小随机填充)、xmux(连接复用参数)都有兼顾兼容性和抗特征识别的默认值,不清楚具体含义的话不建议手动改。
mode 怎么选
Transport 展开后有个 mode 字段,几个选项分别是:
- auto(默认):客户端会根据情况自动选——用 TLS 时倾向 stream-up,用 Reality 时倾向 stream-one,其他情况用 packet-up。大部分人直接用这个就行。
- packet-up:兼容性最强的模式,穿透各种 CDN、反代软件的能力最好。如果你的节点套了 CDN,或者不确定中间的反代软件支不支持流式上传,选这个最保险。
- stream-up:上下行都是流式的,效率比 packet-up 更高,但对服务端有要求——用 Nginx 反代的话,要把
proxy_pass改成grpc_pass才能正常穿透;套 Cloudflare 的话,需要在 CF 面板里开启 gRPC 支持。 - stream-one:上下行共用一条连接,效果上比较接近普通 VLESS 套了层 HTTP 包装,兼容性和 stream-up 接近。
不确定选哪个的话,先用 auto,遇到连不上或者速度异常再按上面的场景换成具体的模式测试。
flow 字段留空,不要填 xtls-rprx-vision
这是最容易抄错的一个地方。普通裸 TCP + Reality 的配置里,flow 通常会填 xtls-rprx-vision 来解决 TLS 握手时序特征的问题;但换成 XHTTP 之后,flow 留空就行,不要照抄裸 TCP 那一套填 vision。
原因是两者解决的是不同层面的问题:Vision 是在裸 TCP 层面调整 TLS 握手的时序特征,XHTTP 是在应用层把流量包装成一个个 HTTP 请求,从设计上就是两条不同的技术路线,不是搭配使用的关系。Xray-core 官方那篇详细说明 XHTTP 原理和参数的文档里,通篇没有提到 flow 字段,也从侧面印证了这一点。网上能搜到一些教程把两者混着写,属于以讹传讹。
获取分享链接并导入客户端
配置保存之后,在入站列表找到这条记录,点二维码图标获取 vless:// 开头的分享链接,链接里已经包含 XHTTP 的 path、mode 等参数。客户端这边,NekoBox、sing-box、v2rayN 目前主流版本都已经支持 XHTTP 传输,导入链接后不需要额外配置。
如果导入后连不上,按这个顺序排查:
- 先确认裸 Reality 部分本身没问题——dest、publicKey、shortId 有没有填错,参考 VLESS Reality教程里的排查方法;
- 客户端和面板的 path 是否完全一致,大小写、开头的
/都要对上; - 如果套了 CDN 或者 Nginx 反代,确认 mode 选的是 packet-up(兼容性最强),Nginx 反代还要检查
proxy_pass有没有改成grpc_pass; - 确认 flow 字段是空的,填了
xtls-rprx-vision的话客户端可能直接连不上。
如果不想折腾这么多传输层参数,直接用裸 TCP + Reality 也完全够用,配置更简单,参考前面链接的那篇教程即可。多用户管理的方式两种传输方式通用,具体看3x-ui多用户管理。