xhttp 有三种模式
PACKET-UP (仅下行流式) 上行分包 Post 下行流式 Get (穿透 CDN 这些中间盒兼容性最佳)
STREAM-UP (双向流式) 上行流式 Post 下行流式 Get (性能最佳,部分 CDN 兼容)
STREAM-ONE (不上下行分离,双向流式) 上下行流式 Post (类似以前 gRPC H2 协议, 可看作替代前者)
本篇文章使用 STREAM-UP 模式
在不考虑 CDN 代理,该模式性能非常好。 纯 h2 下测速可以跑满服务器带宽(前提是自己服务器线路好才行)
当然也可以选择 hy2 力大飞砖
服务端配置
xray-core 配置
{
"log": {
"loglevel": "info"
},
"inbounds": [
{
"tag": "xhttp",
"listen": "/dev/xray/vless-xhttp.sock,0666",
"protocol": "vless",
"settings": {
"clients": [
{
"id": "你的UUID",
"email": "你的EMAIL"
}
],
"decryption": "none"
},
"streamSettings": {
"network": "xhttp",
"xhttpSettings": {
"mode": "stream-up",
"path": "/xhttp (需要换成自己的路径)",
"noSSEHeader": false,
"scMaxEachPostBytes": 1000000,
"scMaxConcurrentPosts": 100
}
}
}
],
"outbounds": [
{
"tag": "direct",
"protocol": "freedom",
"settings": {}
}
],
"routing": {
"domainMatcher": "hybrid",
"rules": [
{
"type": "field",
"outboundTag": "direct", // 服务端有分流需求更换
"domain": [
"geosite:openai",
"geosite:tiktok"
]
}
]
}
}
nginx 配置
server {
server_name 填上自己的域名;
listen 443 quic reuseport default_server;
listen [::]:443 quic reuseport default_server;
listen 443 ssl;
listen [::]:443 ssl;
# HTTP 2/3
http2 on;
http3 on;
quic_gso on;
quic_retry on;
add_header Alt-Svc 'h3=":443"; ma=86400';
# include snippets/security.conf;
# 添加自己的SSL证书配置
# 可使用https://ssl-config.mozilla.org 生成
location /xhttp (需要换成自己的路径) {
grpc_pass unix:/dev/xray/vless-xhttp.sock;
grpc_socket_keepalive on;
grpc_read_timeout 30m;
grpc_send_timeout 30m;
# 反向代理Header
grpc_set_header Host $host;
grpc_set_header X-Real-IP $proxy_protocol_addr;
grpc_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
grpc_set_header X-Forwarded-Proto $scheme;
}
# 使用自己网站或反向代理伪装
location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php$1 last;
}
try_files $uri $uri/ /index.php?$args;
}
}
客户端配置 (上下行分离 上行 H3 下行 H2)
目前仅 v2rayNG 支持该协议, 填上对应的配置即可使用。
当然也可以配置文件 + 命令行启动代理
"outbounds": [
{
"tag": "proxy",
"protocol": "vless",
"settings": {
"vnext": [
{
"address": "填上自己的域名",
"port": 443,
"users": [
{
"id": "填上自己的UUID",
"email": "填上自己的EMAIL"
}
]
}
]
},
"streamSettings": {
"network": "xhttp",
"security": "tls",
"tlsSettings": {
"allowInsecure": false,
"serverName": "填上自己的域名",
"alpn": [
"h3"
]
},
"xhttpSettings": {
"path": "/xhttp (需要换成自己的路径)",
"host": "填上自己的域名",
"mode": "stream-up",
"scMaxEachPostBytes": "500000-1000000",
"scMaxConcurrentPosts": "50-100",
"scMinPostsIntervalMs": "30-50",
"extra": {
// 多路复用配置(默认配置的Lifetime超出nginx超时时间)
"xmux": {
"maxConcurrency": "8-16",
"maxConnections": 0,
"cMaxReuseTimes": "64-128",
"cMaxLifetimeMs": 600000
},
// 下行分离H2配置,不需要可以去除
"downloadSettings": {
"address": "填上自己的域名",
"port": 443,
"network": "xhttp",
"security": "tls",
"tlsSettings": {
"serverName": "填上自己的域名",
"alpn": [
"h2"
]
},
"xhttpSettings": {
"path": "/xhttp (需要换成自己的路径)"
}
}
}
}
}
},
上下行分离配置,大伙可以自由发挥想象
比如可以上行 ipv6 下行 ipv4(双栈机器)、 上行走入口好的机器,下行走出口好的机器再反代到上行机器(xhttp 必须回到同 inbound 服务)