在研究完Nginx反代Xray之后,开始尝试使用Xray来反代Nginx,经过一番尝试后成功
主要就是利用Xray的Reality的特性,即Reality认证不成功会进行流量的转发,那么只要设置转发到本地Nginx监听端口就天然实现了反代
1、在实现前,照例先进行端口规划,默认Nginx通过HTTP模块监听80、443端口,修改为80、8443,把443端口交给Xray来进行监听,本次案例规划如下:
| 端口 |
监听程序 |
用途 |
| 80,8443 |
Nginx |
HTTP模块监听端口,提供正常的网站服务 |
| 443 |
Xray |
Xray Reality协议监听端口 |
2、进行Xray的设置
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 33 34 35
| { "listen": null, "port": 443, "protocol": "vless", "settings": { "clients": [ { "email": "自己填", "flow": "xtls-rprx-vision", "id": "自己填" } ], "decryption": "none", "fallbacks": [] }, "streamSettings": { "network": "tcp", "realitySettings": { "dest": "8443", "privateKey": "自己填", "serverNames": [ "伪装网站域名" ], "shortIds": [ "自己填" ], "show": false, "xver": 0 }, "security": "reality", "tcpSettings": { "acceptProxyProtocol": false } } }
|
3、Nginx照常设置,只需要记得Nginx的网站中需包含伪装网站,各个网站HTTPS监听8443端口即可
4、自此可以正常使用Reality,并访问Nginx上的网站了
经过以上设置,各个网站日志中,访问者都是127.0.0.1,如果想获取访问者真实地址的话,需要做两处修改
1、Xray中的xver值设置为1或者2
2、Nginx配置文件中对应网站的server部分修改如下:
1 2 3
| listen 8443 ssl http2 proxy_protocol; set_real_ip_from 127.0.0.1; real_ip_header proxy_protocol;
|