📋 方案概览
本服务器采用 Nginx + Xray 的双层代理架构,实现稳定、隐秘的网络代理服务,代理服务端口可单开新端口也可直接用443端口。 我最开始为保证nginx 443端口的网络纯粹性,搞得稍微复杂了点,单开了8443作为代理专用端口,其实完全可以多域名同时指向服务器IP的443端口,代理服务专用一个特定域名。
┌─────────────────────────────────────────────────────────────────┐
│ 外部用户请求 │
└─────────────────────────────┬───────────────────────────────────┘
│
▼
┌─────────────────┐
│ Nginx (443) │ ← SSL加密层
│ 反向代理入口 │
└────────┬────────┘
│
┌──────────────┼──────────────┐
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│伪装网站 │ │ 其他服务 │ │代理服务 │
│端口443 │ │ (可选) │ │端口8443 │
└──────────┘ └──────────┘ └──────────┘
│
▼
┌─────────────────┐
│ Xray │ ← 核心代理
│ (VLESS+WS) │ 端口10086
└────────┬────────┘
│
▼
┌─────────────────┐
│ 外部网络访问 │
└─────────────────┘
🏗️ 架构详解
1️⃣ Nginx 反向代理层
作用: 流量入口、SSL加密、请求分发
监听端口:
443- 主站 + 伪装网站8443- 代理专用端口(非标准端口)80- HTTP强制跳转HTTPS
服务分发:
| 域名 | 路径 | 目标 | 用途 |
|---|---|---|---|
| 主域名 | /[伪装路径1] |
静态文件 | 伪装网站1 |
| 主域名 | /[伪装路径2] |
静态文件 | 伪装网站2 |
| 主域名 | /[代理路径] |
localhost:10086 |
Xray代理服务 |
关键配置:
# WebSocket 代理配置
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# 转发真实IP
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
2️⃣ Xray 核心代理层
作用: 实际的流量转发、协议转换
监听端口: 127.0.0.1:10086(仅本地访问)
协议配置:
- 传输协议: VLESS
- 传输方式: WebSocket (WS)
- 加密方式: none(依赖TLS加密)
- 访问控制: UUID验证
配置结构:
{
"inbounds": [{
"port": 10086,
"protocol": "vless",
"streamSettings": {
"network": "ws",
"wsSettings": {
"path": "/[代理路径]"
}
}
}],
"outbounds": [{
"protocol": "freedom"
}]
}
🔐 安全机制
1. SSL/TLS 加密
证书来源: Let's Encrypt (Certbot自动续期) 支持的TLS版本: TLSv1.2, TLSv1.3
用户 → (TLS加密) → Nginx → (明文) → Xray → 目标网站
←───────────←─────────←───────────
2. UUID 身份验证
只有配置了正确UUID的客户端才能使用代理服务。
3. 端口隔离
443- 公开访问,正常流量8443- 非标准端口,降低被发现风险10086- 仅本地监听,外部无法直接访问
4. 路径伪装
WebSocket路径伪装成普通API路径:
/api/v1/stream ← 看起来像正常的API接口
5. 流量混淆
通过Nginx的WebSocket代理,代理流量看起来像正常的WebSocket通信。
🌐 流量伪装
伪装网站访问流程
普通用户访问
↓
Nginx (443端口)
↓
根据路径分发:
├→ /[伪装路径1] → 伪装网站1
├→ /[伪装路径2] → 伪装网站2
└→ /[代理路径] → Xray代理服务
目的: 让服务器看起来像一个普通的Web服务器,降低被封风险。
📱 客户端配置
推荐客户端:v2rayN
支持平台:
- ✅ Windows
- ✅ Android
下载地址:
- Windows: https://github.com/2dust/v2rayN/releases
- Android: https://github.com/2dust/v2rayNG/releases
连接信息(示例):
协议:vless
地址:[你的域名]
端口:8443
UUID:[你的UUID]
传输方式:ws
路径:/[代理路径]
TLS:开启
其他支持客户端:
- ✅ V2Ray / Xray 全平台客户端
- ✅ Clash
- ✅ Qv2ray
- ✅ Shadowrocket (iOS)
- ✅ Quantumult X (iOS)
⚡ 性能优化
Nginx 优化
- Worker连接数: 768
- SSL会话缓存: 10MB
- SSL会话超时: 10分钟
- Gzip压缩: 已启用
Xray 优化
- 无日志: 降低I/O开销
- 本地监听: 减少网络跳数
- WebSocket流式传输: 低延迟
🛠️ 服务管理
Nginx
# 查看状态
systemctl status nginx
# 重启服务
systemctl restart nginx
# 测试配置
nginx -t
# 查看日志
tail -f /var/log/nginx/access.log
tail -f /var/log/nginx/error.log
Xray
# 查看状态
systemctl status xray
# 重启服务
systemctl restart xray
# 测试配置
xray run -test -config [配置文件路径]
📊 端口映射表
| 端口 | 监听地址 | 服务 | 外部访问 |
|---|---|---|---|
| 80 | 0.0.0.0 | Nginx (HTTP) | ✅ |
| 443 | 0.0.0.0 | Nginx (HTTPS) | ✅ |
| 8443 | 0.0.0.0 | Nginx (代理) | ✅ |
| 10086 | 127.0.0.1 | Xray | ❌ |
🔍 故障排查
问题1:无法连接代理
检查步骤:
# 1. 检查Nginx状态
systemctl status nginx
# 2. 检查Xray状态
systemctl status xray
# 3. 检查端口监听
netstat -tlnp | grep -E "443|8443|10086"
# 4. 查看错误日志
tail -f /var/log/nginx/error.log
问题2:SSL证书过期
解决方案:
# Certbot自动续期
certbot renew
# 手动续期
certbot certonly --standalone -d [域名]
问题3:代理速度慢
可能原因:
- 网络带宽限制
- 服务器负载过高
- 客户端网络问题
解决方法:
# 查看服务器负载
htop
# 查看网络使用
iftop
📝 配置文件路径
| 服务 | 配置文件 | 路径 |
|---|---|---|
| Nginx | 主配置 | /etc/nginx/nginx.conf |
| Nginx | 站点配置 | /etc/nginx/sites-enabled/ |
| Xray | 配置文件 | /usr/local/etc/xray/config.json |
| SSL | 证书路径 | /etc/letsencrypt/live/[域名]/ |
⚠️ 注意事项
- 定期备份配置文件
- 监控服务状态(建议设置自动重启)
- 及时更新SSL证书(Certbot已配置自动续期)
- 修改默认路径(提高安全性)
- 定期更换UUID(防止泄露)
- 监控流量使用(避免超限)
📌 总结
方案特点:
- ✅ 双层架构,安全稳定
- ✅ SSL加密,保护隐私
- ✅ 流量伪装,降低风险
- ✅ WebSocket传输,低延迟
- ✅ 多服务共存,提高利用率