站点与 Xray 共用 443 反向代理 —— Nginx Stream
网站域名访问与 3x-ui 中的 Xray 节点都需要使用 443 端口时,如果 Nginx 和 Xray 同时监听同一个公网 IP 的 443 端口,会发生端口冲突,导致网站无法访问或者 VLESS TLS / Reality 节点无法正常连接。
本教程使用 Nginx stream + ssl_preread 作为公网 443 的统一入口,由 Nginx 在四层读取 TLS ClientHello 中的 SNI,但不解密代理节点流量,然后将不同 SNI 的连接转发到不同的本地服务,实现网站与 3x-ui/Xray 共用公网 443 端口。
与 v2ray-agent 的 Xray fallback 方案不同,本教程中 公网 443 由 Nginx stream 监听,3x-ui 中使用 443 的 Xray 入站改为仅监听 127.0.0.1:443。客户端仍然连接服务器公网 IP 的 443 端口,127.0.0.1:443 只是服务器内部转发端口。
教程示例环境:
3x-ui / Xray → 公网 443 → 内部 127.0.0.1:443
VLESS Reality Vision → 443
VLESS TCP TCP/TLS Vision → 443 或其他独立端口
Komari 面板 → https://komari.10181128.xyz → 127.0.0.1:8083
OpenList 网盘 → https://alist.10181128.xyz → 127.0.0.1:5244
PanSou 盘搜 → https://pansou.10181128.xyz → 127.0.0.1:8107
服务器公网 IP → 69.63.216.218
Reality 的 SNI 可以使用 www.amd.com、Amazon、Cloudflare 等不同目标域名,只要不与实际网站域名冲突,就会自动进入 default → Xray,无需每次修改 Nginx 配置。
准备工作:
- 一台 Debian / Ubuntu 服务器,并获取服务器公网 IP。
- 公网 IP 已直接绑定到服务器网卡。
- 域名已解析到当前服务器。
- 3x-ui 已安装,并已创建 VLESS TLS / Reality 入站。
- Komari、OpenList、PanSou 等网站服务已安装并监听自己的内部端口。
- 系统 Nginx 已安装。
- 本教程示例中的公网 IP、域名和端口需要替换成自己的实际配置。