[分享] xhttp 五合一出站配置方案 (Xray + Caddy + Mihomo) #2669
Replies: 7 comments 19 replies
-
|
谢谢大佬,可以抄抄配置了 |
Beta Was this translation helpful? Give feedback.
-
|
CF 配置缓存 bypass 规则这一步,我之前试过不设置这个也可以使用xhttp节点 |
Beta Was this translation helpful? Give feedback.
-
|
上下行分离的url怎么写? |
Beta Was this translation helpful? Give feedback.
-
|
请问使用mihomo当客户端,那xray的xmux相关的配置是不是就无效了,是否可以使用mihomo的smux替代呢 |
Beta Was this translation helpful? Give feedback.
-
|
谢谢楼主分享,看见xmux这一块的数值和默认值不太一样,是楼主试出来的最优解吗? # max-concurrency: "16-32"
# max-connections: "0"
# c-max-reuse-times: "0"
# h-max-request-times: "600-900"
# h-max-reusable-secs: "1800-3000" |
Beta Was this translation helpful? Give feedback.
-
|
正好mihomo更新xhttp了,来看看怎么写配置❤️ |
Beta Was this translation helpful? Give feedback.
-
|
XTLS/BBS#25 |
Beta Was this translation helpful? Give feedback.

Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
前置说明
本文方案的灵感主要来源于 Benjamin1919 大佬的 xhttp 五合一配置教程 XTLS/Xray-core#4118
该教程基于
Xray 服务端 + Nginx + Xray 客户端构建近期 mihomo 内核也正式支持了 xhttp 传输方式。我将原方案的 Nginx 替换为了配置更轻量的 Caddy,并将客户端侧平移到了 mihomo,最终为
Xray 服务端 + Caddy + mihomo 客户端的新组合(其中客户端节点配置感谢 珊瑚哈希 提供的示例)xhttp 五合一指的是在同一台 VPS 的 443 端口实现了五个出站节点:
点击查看 适用场景
XTLS(Vision) + Reality 直连
xhttp + Reality 直连
上行 xhttp + TLS + CDN | 下行 xhttp + Reality(上下行不同 SNI)
xhttp + TLS 过 CDN
上行 xhttp + Reality | 下行 xhttp + TLS + CDN(上下行不同 SNI)
Tip
v1.19.22v1.19.23Important
必要条件:
点击查看 前置必要设置
Cloudflare 设置
域名托管到CF、添加域名解析A记录:
cdn.example.com:对应 VPS IPv4,(开小黄云,过 CDN)reality.example.com:对应 VPS IPv4,(关小黄云,直连,用于 Reality 握手)面板左侧列表 -> SSL/TLS -> 加密设置为
完全(严格)面板左侧列表 -> 网络 -> 设置 gRPC 开启
缓存规则设置
在 CF 配置缓存 bypass 规则
面板左侧列表 -> 缓存 -> Cache Rules -> 创建缓存 -> Cache Rules:
名称随意
如果传入请求匹配…选择自定义筛选表达式往下滑,点击右侧蓝色的
编辑表达式输入以下内容(记得替换为你自己的域名和路径):
缓存资格设置为绕过缓存完成 点击
部署即可为域名申请 TLS/SSL
关于证书,可以使用
go-acme/lego工具,或者直接用cf给的源服务器证书此处仅简单说明cf的创建过程
点击左侧的
SSL/TLS–源服务器,点击创建证书按钮选项默认即可,之后就可见两个长代码块了(先不要关闭该页面)
在VPS:
创建
/etc/caddy/certs/cf.crt,并粘贴证书代码创建
/etc/caddy/certs/cf.key,并粘贴私钥代码/usr/local/etc/xray/config.json/etc/caddy/Caddyfile用户组设置
启动 Xray 和 Caddy 前需统一运行用户为
caddy,否则会出现 socket 权限问题:执行
sudo systemctl edit xray输入
保存即可
启动 Xray 和 Caddy 后,理想状态为
1. Xray 服务端配置
点击查看 Xray 服务端配置
{ "log": { "loglevel": "info" // 调试完成后可改为 "warning" }, "inbounds": [ { "listen": "0.0.0.0", // 如果需要 IPv6,改为监听 "::" "port": 443, "protocol": "vless", "settings": { "clients": [ { "id": "UUID_01", // 对应客户端出站 1 "level": 0, "email": "vision-user", "flow": "xtls-rprx-vision" }, { "id": "UUID_02", // 对应客户端出站 2/3/4/5 "level": 0, "email": "xhttp-user" } ], "decryption": "none", "fallbacks": [ { "dest": "/run/xray/xhttp_in.sock", // 处理“直连”的 XHTTP 请求 (对应客户端出站 2/3/5 的直连部分) // 当 Reality 识别出 VLESS 协议但没有 flow 时,直接丢给内部 XHTTP Socket "xver": 0 } ] }, "streamSettings": { "network": "raw", "security": "reality", "realitySettings": { "show": false, "target": "/run/xray/tls_gate.sock", // 处理“CDN 转发”或“普通 HTTPS”请求 (对应客户端出站 3/4/5 的 CDN 部分) // 任何 Reality 不识别的流量都丢给 Caddy 处理 "xver": 0, "serverNames": [ "reality.example.com", "cdn.example.com" ], "privateKey": "YOUR_REALITY_PRIVATE_KEY", "shortIds": ["YOUR_SHORT_ID"] }, "sockopt": { "tcpFastOpen": true, "tcpcongestion": "bbr", "tcpMptcp": true, "tcpNoDelay": true } }, "tag": "REALITY_INBOUND" }, { "listen": "/run/xray/xhttp_in.sock,0666", "protocol": "vless", "settings": { "clients": [ { "id": "UUID_02", "level": 0, "email": "xhttp-user" } ], "decryption": "none" }, "streamSettings": { "network": "xhttp", "xhttpSettings": { "host": "", "path": "/your-xhttp-path", "mode": "auto", "extra": { "noSSEHeader": true, "scMaxEachPostBytes": 1000000, "xPaddingBytes": "100-1000" } } }, "tag": "XHTTP_INBOUND" } ], "outbounds": [ { "protocol": "freedom", "tag": "direct", "settings": {} }, { "protocol": "blackhole", "tag": "blocked", "settings": {} } ], "routing": { "domainStrategy": "AsIs", "rules": [ { "type": "field", "ip": ["geoip:private"], "outboundTag": "blocked" } ] } }2. Caddy 反代配置
点击查看 Caddy 反代配置
3. Mihomo 客户端配置
Tip
reuse-settings(XMUX),写入该字段会被内核自动忽略reuse-settings以降低握手开销reuse-settingsCaution
reuse-settings即可,不要叠加全局 smux 字段HTTP/2 -> VLESS -> Smux -> Data点击查看 Mihomo 客户端配置
ALPN 设置说明:
mihomo v1.19.23 仅支持 h2,预计下坂本支持 http/1.1 和 h3,不支持多协议动态回退/切换,写法如下:
Beta Was this translation helpful? Give feedback.
All reactions