代理与网络
教程折腾17 分钟

VLESS + WebSocket + Cloudflare 保底方案:隐藏源站 IP 的备用线路

用 Cloudflare 代理域名和 Nginx 反代搭建 VLESS WebSocket 备用线路。

VLESS + WebSocket + Cloudflare 保底方案:隐藏源站 IP 的备用线路 封面图
更新于 2026年7月12日0 收藏0 认为有帮助系列第 4 / 5
验证版本
Xray v26.3.27
验证日期
2026-05-20 00:00
现在可看
13 个
剩余内容
当前页已完整
开始前
你会得到什么
  • 搭建 Cloudflare 代理域名入口
  • 用 Nginx 反代 Xray WebSocket
  • 区分 Reality SNI 和 WS SNI
开始前要有
  • 域名托管到 Cloudflare
  • 准备 ws 子域名
  • 源站有可用 HTTPS 证书
关键工具
Xray-core · 26.3.27
VLESS
WebSocket
Cloudflare
Nginx
行动入口

来源与后续讨论

这里不是普通友情链接,而是读完文章后最应该跳转确认的地方:官网确认版本,GitHub 看源码和 Issue,第三方来源做交叉参考,X 帖子看后续补充和讨论。

建议顺序:官网 → GitHub → 第三方来源 → X 讨论。遇到版本差异时,优先相信官网和仓库发布记录。
正文

VLESS + WebSocket + Cloudflare 保底方案:隐藏源站 IP 的备用线路

Reality 直连线路的优点是链路短、延迟低,但它依赖客户端能直接访问 VPS IP。WebSocket + Cloudflare 的定位不同:把入口放到 Cloudflare 代理域名上,让客户端只连接 Cloudflare,再由 Cloudflare 转发到源站。

这条线路更适合作为保底方案。它不一定比 Reality 更快,但在你需要隐藏源站 IP、保留备用入口、或让连接路径经 Cloudflare 中转时很有用。

与 Reality 的区别

对比项Reality 直连WS + Cloudflare
客户端连接VPS IPCloudflare 代理域名
源站 IP 暴露会暴露给客户端客户端侧不直接暴露
延迟通常更低通常更高
域名要求不需要需要域名托管到 Cloudflare
Nginx 角色可选,用于 SNI 分流必需,用于 WebSocket 反代
适合定位主力线路备用线路或源站隐藏

如果你还没读总览,可以先看 自建 VLESS 代理完全指南

架构

本文采用更稳妥的 443 stream 入口:

输出text
  |  | VLESS + WebSocket + TLS  vCloudflare:443  |  | HTTPS  VPS:443  vNginx stream:443  |  | SNI=ws.example.com  vNginx HTTPS server:127.0.0.1:8080  |  | WebSocket   vXray WS inbound:127.0.0.1:10443

这样公网只需要暴露 443。8080 和 10443 都是本机内部端口。

前置条件

你需要准备:

  • 一个域名,DNS 托管到 Cloudflare。
  • 一个子域名,例如 ws.example.com
  • VPS 上安装 Nginx,且支持 stream 模块。
  • VPS 上安装 Xray-core。
  • 一张源站证书。如果使用 Cloudflare Full (strict),建议使用 Let’s Encrypt 或 Cloudflare Origin Certificate。

Cloudflare 官方文档建议优先使用 Full 或 Full (strict) 模式。Full 不验证源站证书有效性,Full (strict) 会验证源站证书,更适合长期生产使用。

vless-ws-cloudflare-fallback_Cloudflare与客户端参数对应教学图

步骤一:配置 Cloudflare DNS

在 Cloudflare DNS 里添加记录:

类型名称内容代理状态
Aws<VPS_IP>Proxied

然后进入 SSL/TLS 设置:

  • 推荐:Full (strict),源站使用有效证书。
  • 可用但较弱:Full,源站可以使用自签证书。
  • 不建议:Flexible,容易造成回源协议不一致和重定向问题。

发布前要确认 ws.example.com 解析出来的是 Cloudflare 代理 IP,而不是你的 VPS 原始 IP:

命令bash
dig ws.example.com +short

步骤二:安装 Xray 并生成 UUID

命令bash
bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ installxray uuid

WebSocket 方案不使用 Reality 的 X25519 密钥对。你只需要 <UUID>

步骤三:配置 Xray WebSocket inbound

编辑:

命令bash
vim /usr/local/etc/xray/config.json

写入:

配置json
{  "log": {    "loglevel": "warning"  },  "inbounds": [    {      "tag": "ws-in",      "listen": "127.0.0.1",      "port": 10443,      "protocol": "vless",      "settings": {        "clients": [          {            "id": "<UUID>",            "flow": ""          }        ],        "decryption": "none"      },      "streamSettings": {        "network": "ws",        "security": "none",        "wsSettings": {          "path": "/gl2025ws"        }      },      "sniffing": {        "enabled": true,        "destOverride": ["http", "tls", "quic"],        "routeOnly": true      }    }  ],  "outbounds": [    {      "protocol": "freedom",      "tag": "direct"    },    {      "protocol": "blackhole",      "tag": "block"    }  ],  "routing": {    "domainStrategy": "IPIfNonMatch",    "rules": [      {        "type": "field",        "ip": ["geoip:private"],        "outboundTag": "block"      },      {        "type": "field",        "protocol": ["bittorrent"],        "outboundTag": "block"      }    ]  }}

检查并启动:

命令bash
xray -test -config /usr/local/etc/xray/config.jsonsystemctl daemon-reloadsystemctl enable --now xraysystemctl restart xrayss -tulnp | grep ':10443'

/gl2025ws 是 WebSocket 路径,可以改成更难猜的字符串。服务端、Nginx 和客户端必须保持一致。

步骤四:配置 Nginx WebSocket HTTPS 后端

创建站点配置:

命令bash
vim /etc/nginx/conf.d/ws.example.com.conf

示例:

代码nginx
server {    listen 127.0.0.1:8080 ssl http2;    server_name ws.example.com;     ssl_certificate /etc/letsencrypt/live/ws.example.com/fullchain.pem;    ssl_certificate_key /etc/letsencrypt/live/ws.example.com/privkey.pem;     location /gl2025ws {        if ($http_upgrade != "websocket") {            return 404;        }         proxy_redirect off;        proxy_pass http://127.0.0.1:10443;        proxy_http_version 1.1;        proxy_set_header Upgrade $http_upgrade;        proxy_set_header Connection "upgrade";        proxy_set_header Host $host;        proxy_set_header X-Real-IP $remote_addr;        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;    }     location / {        return 404;    }}

如果你使用 Cloudflare Origin Certificate,证书路径按实际保存位置填写。使用 Full (strict) 时,证书必须能被 Cloudflare 接受。

步骤五:配置 Nginx stream 入口

编辑:

命令bash
vim /etc/nginx/nginx.conf

在最外层加入:

代码nginx
stream {    map $ssl_preread_server_name $backend {        www.example.com   127.0.0.1:8080;        # 一定要配置这个匹配上ws        ws.example.com   127.0.0.1:8080;        default          127.0.0.1:8080;    }     server {        listen 443;        ssl_preread on;        proxy_pass $backend;        proxy_connect_timeout 10s;        proxy_timeout 300s;    }}

如果同一台机器还跑主站,请把主站域名也映射到对应 HTTPS 后端。并行版会在 Reality + WS 并行部署 里给出完整分流。

检查:

命令bash
nginx -tsystemctl reload nginxss -tulnp | grep -E ':443|:8080|:10443'

步骤六:配置防火墙

推荐只对外暴露 22 和 443:

命令bash
ufw allow 22/tcpufw allow 443/tcpufw deny 8080/tcpufw deny 10443/tcpufw enableufw status

如果你选择让 Cloudflare 直接回源到 8080,而不是通过 443 stream 回源,那么 8080 只能限制给 Cloudflare IP 段访问。不要把 8080 无限制开放到公网。

步骤七:验证 WebSocket 链路

先验证 Xray 内部 WebSocket inbound:

命令bash
curl -si http://127.0.0.1:10443/gl2025ws \  -H 'Connection: Upgrade' \  -H 'Upgrade: websocket' \  -H 'Host: ws.example.com' \  -H 'Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==' \  -H 'Sec-WebSocket-Version: 13' \  | grep -iE '^HTTP|upgrade'

预期能看到 101 Switching Protocols。如果返回 400 或无响应,先检查 Xray 的 path、端口和服务状态。

再验证 Nginx HTTPS 后端:

命令bash
curl -k -si https://127.0.0.1:8080/gl2025ws \  -H 'Connection: Upgrade' \  -H 'Upgrade: websocket' \  -H 'Host: ws.example.com' \  -H 'Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==' \  -H 'Sec-WebSocket-Version: 13' \  | grep -iE '^HTTP|upgrade'

最后用客户端从外部连接 ws.example.com:443,确认能完成握手并访问网络。

客户端参数

参数
协议VLESS
地址ws.example.com
端口443
UUID<UUID>
Flow留空
传输ws
路径/gl2025ws
TLStls
SNIws.example.com
Hostws.example.com
Fingerprintchrome

小结

WS + Cloudflare 不是 Reality 的简单替代品,而是一条不同定位的备用链路:

  • 客户端连接 Cloudflare 代理域名,而不是 VPS IP。
  • Cloudflare SSL/TLS 模式建议使用 Full 或 Full (strict)。
  • Nginx 负责 HTTPS 终止和 WebSocket Upgrade 反代。
  • Xray WS inbound 只监听本机端口。
  • 8080 和 10443 不应无限制暴露到公网。

如果你想把 Reality 主力和 WS 保底放在同一台机器上,继续看 Reality 主力 + WS 保底并行部署

0%
继续行动
阅读提示

按文章步骤复核自己的 VPS、域名、端口和客户端参数。

复制命令前先替换占位符并执行配置检查。现在可看 13 段,这页已经可以直接看完。属于系列 VLESS/Xray 自建代理实战 · 第 4 / 5 篇

这篇已经可以直接看完,可以继续下一篇。

相关阅读

按顺序继续补齐上下文

4
继续这个系列

VLESS/Xray 自建代理实战

当前第 4 / 5
更新记录
2026年5月25日
已完成验证