xHTTP 传输

概览

xHTTP 是 Xray 的一种传输方式,它通过常规 HTTP 请求/响应模式承载代理流量,使其更接近普通 Web 应用流量。它常与 VLESS + TLS/Reality 搭配使用,以增强伪装并穿越受限网络环境。

适用场景

  • 你需要让流量融入常见 HTTPS API 访问模式。
  • 你的网络环境对长连接 WebSocket 或 gRPC 特征较敏感。
  • 你希望将 VLESS 的身份认证与 HTTP 风格的上下行行为结合。

核心配置字段

字段侧别含义
network: xhttpclient/server启用 xHTTP 传输。
pathclient/server传输使用的 HTTP 请求路径,客户端与服务端必须一致。
hostclient可选的 Host 请求头覆盖(用于前置/反向代理场景)。
modeclient/server传输模式,通常为 auto(默认)或平台特定变体。
extra.headersclient额外 HTTP 请求头,用于模拟应用/API 流量。
xmuxclient/server多路复用调优项,如并发限制与连接复用。
tls / realityclient/server生产环境强烈建议启用加密/伪装层。

最小示例(客户端,Clash-Meta 风格)

proxies:
  - name: vless-xhttp
    type: vless
    server: edge.example.com
    port: 443
    uuid: 11111111-2222-3333-4444-555555555555
    tls: true
    servername: cdn.example.com
    network: xhttp
    xhttp-opts:
      path: /api/v1/sync
      host:
        - cdn.example.com
      mode: auto
      headers:
        User-Agent:
          - okhttp/4.12.0

最小示例(服务端,Xray 风格)

{
  "inbounds": [
    {
      "port": 443,
      "protocol": "vless",
      "settings": {
        "clients": [
          { "id": "11111111-2222-3333-4444-555555555555" }
        ],
        "decryption": "none"
      },
      "streamSettings": {
        "network": "xhttp",
        "security": "tls",
        "tlsSettings": {
          "serverName": "cdn.example.com",
          "certificates": [
            {
              "certificateFile": "/etc/ssl/fullchain.pem",
              "keyFile": "/etc/ssl/privkey.pem"
            }
          ]
        },
        "xhttpSettings": {
          "path": "/api/v1/sync",
          "mode": "auto"
        }
      }
    }
  ]
}

部署注意事项

  • 保持客户端与服务端 path 和 mode 完全一致,否则握手会失败。
  • 优先使用真实且稳定的请求头;频繁变更指纹会降低稳定性。
  • 若部署在 Nginx/Caddy/CDN 后方,请确保请求缓冲与超时限制适配长连接代理流。
  • 先使用保守的 xmux 参数,待观察延迟与上游限制后再调高并发。

故障排查清单

  • 连接后立即出现 EOF:请检查 UUID、TLS server name 以及 path 是否一致。
  • 频繁重连:请检查反向代理空闲超时和 HTTP/2 上游设置。
  • 握手正常但吞吐差:请减少请求头冗余、调优 xmux,并确认 CDN 区域亲和性。