最近摸索了下使用Nginx反代Xray Reality加密,记录如下:
1、规划好使用的端口,默认Nginx通过HTTP模块监听80、443端口,现在我们需要将443端口使用Stream模块来监听,本次案例规划如下:
端口 |
监听程序 |
用途 |
80,8443 |
Nginx |
HTTP模块监听端口,提供正常的网站服务 |
443 |
Nginx |
Stream模块监听端口,进行分流 |
7443 |
Xray |
Xray Reality协议监听端口 |
2、进行Stream分类配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| stream { map $ssl_preread_server_name $backend_name { 伪装网站域名 reality_backend; default web_backend; } upstream reality_backend { server 127.0.0.1:7443; } upstream web_backend { server 127.0.0.1:8443; } server { listen 443; ssl_preread on; proxy_pass $backend_name; proxy_protocol on; } }
|
3、照常配置Reality,重点是传输层一定要允许接收代理协议
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| { "listen": "127.0.0.1", "port": 7443, "protocol": "vless", "settings": { "clients": [ { "email": "自己填", "flow": "xtls-rprx-vision", "id": "自己填" } ], "decryption": "none" }, "streamSettings": { "network": "tcp", "realitySettings": { "dest": "8443", "privateKey": "自己填", "serverNames": [ "伪装网站域名" ], "shortIds": [ "自己填" ] }, "security": "reality", "tcpSettings": { "acceptProxyProtocol": true } } }
|
4、正常配置伪装网站及SSL证书,以下只是个样例
1 2 3 4 5 6
| server { listen 127.0.0.1:8443 ssl; server_name 伪装网站域名; ssl_certificate 伪装网站域名证书位置; ssl_certificate_key 伪装网站域名私钥位置; }
|
自此可以正常访问伪装网站,Xray Reality也能正常连接使用
这是Nginx反代Reality最基础的配置,在此基础上可以尽情自由发挥了