xhttp 五合一的配置,在同一台 VPS 的 443 端口实现了:XTLS(Vision)+Reality 直连, xhttp+Reality 直连, 上行 xhttp+TLS+CDN | 下行 xhttp+Reality (上下行不同SNI), xhttp+TLS 过CDN ,上行 xhttp+Reality | 下行 xhttp+TLS+CDN (上下行不同SNI)

原文
https://github.com/XTLS/Xray-core/discussions/4118

xhttp 五合一的配置,在同一台 VPS 的 443 端口实现了:

  • XTLS(Vision)+Reality 直连
  • xhttp+Reality 直连
  • 上行 xhttp+TLS+CDN | 下行 xhttp+Reality (上下行不同SNI)
  • xhttp+TLS 过CDN
  • 上行 xhttp+Reality | 下行 xhttp+TLS+CDN (上下行不同SNI)

如果不需要这么复杂的组合
https://github.com/XTLS/Xray-core/discussions/4118#discussioncomment-11593313

假设 reality 直连的域名是 a.yourdomain.com,过 CDN 的域名是 b.yourdomain.com。

(注:双端 xray-core 的版本不能低于 v24.12.15 )

说明:

  • xhttp+Reality 上下行均为 h2;
  • xhttpSettings 中的 "extra": {} 里的配置项 默认参数在大多数场景下是最优的,如果觉得繁琐,可以删掉整个 "extra": {},然后你会发现 xhttp 其实只需要配置 host、path、mode,与大家熟悉的 ws/httpupgrade 一样简单,而且客户端还不需要在 path 后面加 ?ed=2560 ;
  • xhttp+TLS+CDN 与 xhttp+Reality 建议使用不同的 SNI;
  • xhttp 上下行分离指的是用户数据的上传与下载分离,但TLS握手永远是双向的,所以“上行 xhttp+TLS+CDN | 下行 xhttp+Reality ”不能拯救被墙 IP,因为 xhttp+Reality 过不了 CDN;如果 VPS 的 IP 被墙,只能采用 上下行均为 xhttp+TLS+CDN 的方式;
  • 当服务端 nginx 版本不低于 1.25 时,nginx 可监听 UDP 端口,此时 xhttp+TLS 直连可实现 h3 (Reality 的target 需设置为 nginx 监听的端口而不是 UDS);
  • Nginx 使用 grpc_pass 反代 xhttp 时 不支持 http/1.1,如果要支持,请使用 proxy_pass(建议舍弃 http/1.1,因为 grpc_pass 性能更好);
  • 使用 Cloudflare 的CDN 时,请检查你的缓存规则,确保 b.yourdomain.com/xhttp_client_upload 不会被缓存;
  • 丢包率超过 5% 的线路,可以适当降低 maxConcurrency 的数值,比如设为 "8-16"

几种代理方式可能的使用场景:

XTLS+Reality

  • ① 客户端 GUI 不支持 xhttp;
  • ② 不想开启 TCP 多路复用;
  • ③ 想要尽可能低的延迟与尽可能高的上下行速度

上下行均为 xhttp+Reality

  • ① VPS 去程和回程的线路都比较好;
  • ② 想要尽可能低的延迟与尽可能高的上下行速度

上行 xhttp+TLS+CDN | 下行 xhttp+Reality

  • ① 去程(客户端→VPS)线路较差,回程(VPS→客户端)线路较好;
  • ② 日常使用更偏重下载,很少上传

上下行均为 xhttp+TLS+CDN

  • ① VPS 去程和回程的线路都很差;
  • ② 不希望 VPS 的 IP 暴露在公网;
  • ③ VPS 的 IP 已被墙

上行 xhttp+Reality | 下行 xhttp+TLS+CDN

  • ① 去程(客户端→VPS)线路较好,回程(VPS→客户端)线路较差;
  • ② 日常使用更偏重上传,很少下载

xhttp 上传模式

RealityTLS alpn上下行分离上传模式
    是-       是stream-up
-       否stream-one
    否h3       是packet-up
       否packet-up
h2       是stream-up
       否stream-one
http/1.1       是packet-up
       否packet-up

理论上 packet-up 性能弱于 stream-up/one,但经过R佬的不断优化,packet-up 性能已经改善许多,非常接近 stream-up/one 。
如果没有上下行分离的需求,强烈建议选择 stream-one 模式,可解决访问某些网站的断流问题:

xhttp+reality,客户端 mode 填 "auto" 或 "stream-one" 效果相同;
xhttp+TLS,客户端 mode 填 "auto" 时, 会在 "stream-one" 和 "stream-up" 中自动选择,但往往会选择 "stream-up",所以建议客户端 mode 填 "stream-one"。
目前 Cloudflare 完美支持 stream-one 模式,其他 CDN 有待测试。

标签: Xray, GFW

添加新评论