最近由于我这里移动的宽带无法通过 vmess 访问网页,而国内的网站却不受影响,想到有可能是域名的问题,国内的域名或者常见的域名就不受影响,所以想着是不是可以使用 vless-reality-vision
避开这个限制。而且根据理解 vless-reality-vision
使用 443 端口可能是更好的选择,但是机子上面的 443 端口已经被 nginx 占用了,通过搜索在网上找到了别人分享的可以通过 nginx 的 steam 模块进行分流,由于我机子上的服务都是使用 docker 启动的,分析下来发现使用 docker 的情况下可以实现非常完美的效果。
首先机子上面要先安装 docker,然后需要创建一张 docker 内部用来通信的网卡(命名为 internal
):
docker network create internal
准备 vless-reality-vision 的配置文件,在配置文件中有一些参数需要自定义,分别是:
id
,uuid 生成可以使用 xray 的命令来生成,windows 下的命令是xray.exe uuid
。privateKey
,也需要去替换,这个参数和客户端的publicKey
是对应的,通过命令xray.exe x25519
生成,执行这个命令之后会同时输出这两个 key。shortIds
(可选),用来区分不同的客户端,在服务端可以填写多个,客户端中填写服务端中填写的任一个就行,可以通过openssl rand -hex 3
生成,命令中的3
可以替换成 1 到 8 中的任意一个数字。dest
和serverNames
(可选),dest
中的值需要填写可以正常访问的境外支持tls1.3
(通过F12
-Security
-Overiew
查看) 和h2
(通过F12
-Network
-Protocol
查看) 的网站。serverNames
填写与dest
域名共用同一个证书的网站(通过F12
-Security
-Main origin
下的网站中的SAN
查看),但是暂不支持填写*
通配符,serverNames
中填写的域名任一个都可以填写到客户端中的serverName
中,serverNames
也可以简化到只填写和dest
相同的一个域名。
我这里提供了一个 API 可以生成一个直接用的 vless-reality-vision 的配置文件。
https://workflow.xinebf.com/webhook/domain-san?d=support.microsoft.com
其中:d=
后面填写配置文件中的 dest
。
在修改好 vless-reality-vision 的配置文件(保存在 ~/app/back/xray-vless-reality-vision.json
)之后,就可以启动 docker 命令了。
在这个 docker 的启动命令中并没有将端口映射到容器外,此时的 vless-reality-vision 并不能被连接,需要创建一个 nginx 的容器通过其中的 stream 模块分流,创建 nginx 的配置文件(保存在 ~/data/nginx/nginx_stream.conf
)通过命令启动 nginx stream 的容器,在这个 nginx stream 的配置文件中包含了所有服务端设置的 serverNames
,即客户端可以填写任意服务端 serverNames
中包含的域名。可以在 nginx 的容器中对外映射 80 端口,nginx stream 的容器对外映射 443 端口。
至此,就可以通过 443 端口使用 vless-reality-vision
了。