目录
简介
v2ray 是一个功能强大的代理软件,支持多种协议和传输方式。在众多传输方式中, WebSocket (ws) 和 TLS 是非常流行的组合,可以有效地隐藏代理流量,提高安全性。本文将介绍如何使用 v2ray 配合 Nginx 实现 ws+tls 的安全代理。
环境准备
- 一台拥有公网IP的 Linux 服务器
- 一个可用的域名,并将域名解析到服务器公网IP
- v2ray 客户端软件(支持Windows/macOS/Linux/Android/iOS等)
配置v2ray
生成证书
使用 v2ray 实现 ws+tls 需要颁发SSL/TLS证书,以下以 Let’s Encrypt 免费证书为例:
- 安装 Certbot 工具:
sudo apt-get update sudo apt-get install certbot
- 生成证书:
sudo certbot certonly –standalone -d your-domain.com
证书文件位于 /etc/letsencrypt/live/your-domain.com 目录下。
配置v2ray服务端
- 安装 v2ray:
bash <(curl -L https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-release.sh)
- 编辑 v2ray 配置文件 /etc/v2ray/config.json:
{ “log”: { “access”: “/var/log/v2ray/access.log”, “error”: “/var/log/v2ray/error.log”, “loglevel”: “info” }, “inbounds”: [ { “port”: 443, “protocol”: “vmess”, “settings”: { “clients”: [ { “id”: “your-uuid”, “alterId”: 64 } ] }, “streamSettings”: { “network”: “ws”, “security”: “tls”, “tlsSettings”: { “certificates”: [ { “certificateFile”: “/etc/letsencrypt/live/your-domain.com/fullchain.pem”, “keyFile”: “/etc/letsencrypt/live/your-domain.com/privkey.pem” } ] }, “wsSettings”: { “path”: “/your-path” } } } ], “outbounds”: [ { “protocol”: “freedom”, “settings”: {} } ]} 注意替换 your-uuid、your-domain.com 和 your-path 为您自己的信息。
- 启动 v2ray 服务:
sudo systemctl start v2ray sudo systemctl enable v2ray
配置v2ray客户端
以 v2rayN 客户端为例,添加新服务器:
- 地址: your-domain.com
- 端口: 443
- 用户ID: your-uuid
- 额外ID: 64
- 加密方式: auto
- 传输协议: websocket
- 伪装类型: none
- 路径: /your-path
- 底层传输安全: tls
保存并连接即可。
配置Nginx
安装Nginx
- 安装 Nginx:
sudo apt-get update sudo apt-get install nginx
- 检查Nginx是否运行:
sudo systemctl status nginx
配置Nginx反向代理
-
编辑 Nginx 配置文件 /etc/nginx/conf.d/default.conf: nginx server { listen 80; server_name your-domain.com; return 301 https://$server_name$request_uri;} server { listen 443 ssl; server_name your-domain.com;
ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA;
location / { proxy_pass http://127.0.0.1:10000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection “upgrade”; proxy_set_header Host $host; }} 注意替换 your-domain.com 为您自己的域名。
-
重启 Nginx:
sudo systemctl restart nginx
测试连接
在客户端连接 v2ray 服务器,访问 https://your-domain.com 即可测试是否成功。
常见问题FAQ
-
如何查看v2ray日志?
- 日志文件位于 /var/log/v2ray/access.log 和 /var/log/v2ray/error.log,可以使用
tail -n 100 /var/log/v2ray/error.log
查看最新的100行错误日志。
- 日志文件位于 /var/log/v2ray/access.log 和 /var/log/v2ray/error.log,可以使用
-
为什么连接v2ray总是失败?
- 检查服务器防火墙是否开放了443端口
- 检查v2ray配置文件中的UUID、path等信息是否正确
- 检查Nginx配置文件中的域名和证书路径是否正确
-
如何更新v2ray和Nginx?
- v2ray可以直接运行安装脚本
bash <(curl -L https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-release.sh)
进行更新 - Nginx可以使用
sudo apt-get update && sudo apt-get upgrade nginx
进行更新
- v2ray可以直接运行安装脚本
-
如何查看v2ray当前连接状态?
- 使用
sudo systemctl status v2ray
命令查看v2ray服务状态 - 查看 /var/log/v2ray/access.log 日志文件中的连接信息
- 使用
-
如何自定义v2ray的WebSocket路径?
- 在v2ray服务端配置文件的
wsSettings.path
字段中修改路径 - 同时需要在Nginx配置文件的
location
块中修改对应的路径
- 在v2ray服务端配置文件的