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应该使用随机字符串,增加隐蔽性 - 必须设置
Upgrade和Connection头以支持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配置步骤
- 将域名DNS托管到Cloudflare
- 添加A记录指向服务器IP,代理状态设为"已代理"(橙色云朵)
- SSL/TLS模式设为"完全"(Full),确保Cloudflare到源站也使用HTTPS
- 建议开启"始终使用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