Xray配置篇-uTools内网穿透SNI回落到Nginx

前言

最近在折腾 Xray,发现 Xray 的 SNI 回落功能很强大,能实现伪装与按域名分流

参考文档:通过 SNI 回落功能实现伪装与按域名分流

申请证书

我编写了一个自动化申请证书的sh 脚本,脚本简单易用高效,支持多种证书申请方式。

安装脚本:

1
bash <(curl -sSL https://is.gd/dpdrPB)

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
36
37
{
"inbounds": [
{
"port": 443,
"protocol": "vless",
"settings": {
"clients": [
{
"id": "xxxx-xxxx-xxxx-xxxx-xxxx", // 填写你的 UUID
"flow": "xtls-rprx-vision",
"level": 0,
"email": "vpsadmin@yourdomain.com"
}
],
"decryption": "none",
"fallbacks": [
{
"name": "*.xx.xx.xx", // 填写你的内网穿透域名
"dest": 3180,
"xver": 1
},
{
"dest": 1318, // 回落到 Xray 的 Trojan 协议
"xver": 1
}
]
},
"streamSettings": {
"network": "tcp",
"security": "tls",
"tlsSettings": {
"serverName": "yourdomain.com"
}
}
}
]
}

让我们来详细解析一下这个配置文件的关键部分:

  1. 入站配置 (inbounds)
  • port: 443: 使用标准 HTTPS 端口
  • protocol: vless: 采用 VLESS 协议,这是 Xray 的一个轻量级加密协议
  1. 客户端设置 (clients)
  • id: 用户的 UUID,作为身份认证
  • flow: xtls-rprx-vision: 启用 vision 流控,提供更好的性能
  • level & email: 用户等级和标识信息
  1. 回落配置 (fallbacks)
  • 第一个回落: 处理内网穿透请求
    • name: *.xx.xx.xx: 内网穿透域名
    • dest: 3180: 转发到本地 3180 端口
    • xver: 1: 启用 PROXY protocol 支持
  • 第二个回落: Trojan 协议
    • dest: 1318: 转发到 Trojan 端口
  1. 传输配置 (streamSettings)
  • network: tcp: 使用 TCP 传输
  • security: tls: 启用 TLS 加密
  • serverName: 服务器域名,用于 TLS 证书验证

Nginx 配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
http {
server {
listen 80;
server_name xx.xx.com;
root /www/webpage;
index index.html;
# 将所有HTTP请求重定向到HTTPS
return 301 https://$host$request_uri;
}

server {
listen 80;
listen [::]:80;
server_name *.us.kg; # 泛域名匹配

location / {
proxy_pass http://127.0.0.1:3180;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
}

结尾

通过以上配置,实现了:

  • 高效的 VLESS + Vision 传输
  • 完整的 TLS 加密保护
  • 灵活的多协议回落机制
  • 支持内网穿透功能