使用 Caddy-L4 为 Xray REALITY 与网站实现 443 端口复用

一、前言

在使用 Xray REALITY 时,一个很现实的问题是:

REALITY 最适合跑在 443 端口,但网站本身也需要 443 端口。

虽然 REALITY 也可以使用 8443209630001 等奇怪端口,但从“流量外观”上就会显得不自然。

这种情况下需要进行 443 端口的复用,一般由 Nginx 来实现:REALITY 监听 443,其他流量 fallback 到网站服务。

Nginx 的配置对于我的脑子来说实在是难 ,所以我一直用的是 Caddy,本文将会使用 Caddy-L4 来实现 443 端口的复用。

二、安装 Caddy-L4

Caddy-L4 是 Caddy 的一个传输层(OSI Layer 4)扩展,用于处理 TCP/UDP 流量,并支持基于 TLS SNI 的连接分流。

该扩展并不自带于 Caddy,因此需要去 下载页面 勾选 caddy-l4 并下载系统对应版本的 Caddy。

参照 Manual Installation 安装到系统。

三、配置 Caddyfile

REALITY 使用 10443 端口作为入站,TLS SNI 使用 intel.comwww.intel.com

barku.re 是一个运行在本地的网站,监听 3000 端口。

下面是一个可能的配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
{
email xinyao_qi@outlook.com
https_port 8443

layer4 {
:443 {
@reality tls sni intel.com www.intel.com
route @reality {
proxy 127.0.0.1:10443
}

route {
proxy 127.0.0.1:8443
}
}
}
}

https://barku.re:8443 {
bind 127.0.0.1
tls xinyao_qi@outlook.com
reverse_proxy 127.0.0.1:3000
}
dark
sans