V2Ray进阶配置:WebSocket加TLS加Web完整方案

方案架构说明

WebSocket+TLS+Web是V2Ray最经典的全链路伪装方案,通过多层伪装让代理流量在每一层都看起来像正常网站访问。整个架构如下:

客户端 --> [TLS加密] --> [CDN中转] --> [Nginx反代] --> [V2Ray WebSocket] --> 目标网站

各层的作用:

  • TLS层:使用合法证书加密所有通信,流量特征与正常HTTPS完全一致
  • CDN层(可选):通过Cloudflare等CDN中转,隐藏服务器真实IP,增加IP存活时间
  • Nginx层:反向代理,将WebSocket路径的请求转发给V2Ray,其他请求转发给Web服务
  • WebSocket层:V2Ray使用WebSocket协议传输,伪装为网站的WebSocket连接
  • Web层:后端运行真实网站,非代理请求返回正常网页内容

这个方案的优势是伪装程度极高,即使IP被封也可以通过CDN继续使用。缺点是链路较长,延迟比直连方案高约30-50ms。

Nginx反向代理配置

Nginx是整个方案的核心枢纽,负责TLS终止、WebSocket转发和Web服务:

server {
    listen 80;
    server_name your-domain.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name your-domain.com;

    ssl_certificate /etc/ssl/cert.pem;
    ssl_certificate_key /etc/ssl/key.pem;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    # WebSocket路径转发给V2Ray
    location /your-secret-path {
        proxy_redirect off;
        proxy_pass http://127.0.0.1:10086;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    # 其他请求转发给后端Web
    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

配置要点:

  • WebSocket路径 /your-secret-path 应该使用随机字符串,增加隐蔽性
  • 必须设置 UpgradeConnection 头以支持WebSocket协议
  • 建议启用TLS 1.3,性能更优

V2Ray服务端配置

V2Ray配置为WebSocket传输,监听本地端口(Nginx会转发到此端口):

{
  "inbounds": [{
    "port": 10086,
    "listen": "127.0.0.1",
    "protocol": "vless",
    "settings": {
      "clients": [{
        "id": "uuid-here"
      }],
      "decryption": "none"
    },
    "streamSettings": {
      "network": "ws",
      "wsSettings": {
        "path": "/your-secret-path"
      }
    }
  }],
  "outbounds": [{
    "protocol": "freedom",
    "settings": {}
  }]
}

服务端配置说明:

  • listen 设为 127.0.0.1,仅接受本地Nginx转发,不直接对外暴露
  • network 设为 ws(WebSocket)
  • path 必须与Nginx配置中的WebSocket路径一致
  • 使用VLESS协议,性能优于VMess

后端Web服务可以搭建一个简单的静态网站或博客:

# 使用Nginx直接提供静态网页
# 在/var/www/html/目录下放置网站文件
# 或者使用WordPress等CMS搭建更逼真的伪装网站

CDN中转配置

使用Cloudflare CDN中转可以隐藏服务器真实IP,是延长IP存活时间的有效手段:

Cloudflare配置步骤

  1. 将域名DNS托管到Cloudflare
  2. 添加A记录指向服务器IP,代理状态设为"已代理"(橙色云朵)
  3. SSL/TLS模式设为"完全"(Full),确保Cloudflare到源站也使用HTTPS
  4. 建议开启"始终使用HTTPS"功能

CDN相关注意事项

  • Cloudflare免费版支持WebSocket,但可能有连接数限制
  • CDN中转会增加约30-50ms延迟
  • 某些CDN可能对长时间WebSocket连接进行超时断开,建议设置心跳保活
  • Cloudflare的IP段通常不会被封锁,可以长期稳定使用

使用CDN后,客户端连接地址使用域名而非IP:

// 客户端WebSocket配置(通过CDN)
{
  "streamSettings": {
    "network": "ws",
    "security": "tls",
    "tlsSettings": {
      "serverName": "your-domain.com"
    },
    "wsSettings": {
      "path": "/your-secret-path",
      "headers": {
        "Host": "your-domain.com"
      }
    }
  }
}

客户端配置

完整的VLESS+WebSocket+TLS客户端配置:

{
  "outbounds": [{
    "protocol": "vless",
    "settings": {
      "vnext": [{
        "address": "your-domain.com",
        "port": 443,
        "users": [{
          "id": "uuid-here",
          "encryption": "none"
        }]
      }]
    },
    "streamSettings": {
      "network": "ws",
      "security": "tls",
      "tlsSettings": {
        "serverName": "your-domain.com",
        "allowInsecure": false
      },
      "wsSettings": {
        "path": "/your-secret-path",
        "headers": {
          "Host": "your-domain.com"
        }
      }
    }
  }]
}

客户端配置要点:

  • address 填写域名(使用CDN时)或IP(直连时)
  • port 填写443(标准HTTPS端口)
  • WebSocket path必须与服务端一致
  • Host头必须填写域名
WebSocket+TLS+Web方案配合CDN是IP被封后的最佳备选方案。建议同时部署Reality方案(主力)和WebSocket+TLS方案(备用),确保始终有可用线路。

需要下载客户端进行配置?请访问V2Ray客户端下载站获取各平台最新版客户端和详细配置教程。

需要下载V2Ray客户端?

访问V2Ray客户端下载站,获取各平台最新版客户端和详细配置教程。

前往V2Ray客户端下载站