使用 v2ray 和 nginx 搭建 TLS WebSocket 代理服务

目录

  1. 简介
  2. 准备工作
  3. 安装 v2ray
  4. 配置 v2ray
  5. 安装 nginx
  6. 配置 nginx
  7. 测试连接
  8. 常见问题解答

简介

v2ray 是一款功能强大的代理软件,可以实现多种代理协议,包括 VMess、VLESS 等。nginx 是一款高性能的 Web 服务器,可以为 v2ray 提供 TLS 加密和 WebSocket 支持。

通过将 v2ray 和 nginx 配合使用,我们可以搭建一个安全、稳定的代理服务,具有以下优点:

  • 使用 TLS 加密传输,提高安全性
  • 利用 WebSocket 协议传输,可以绕过防火墙限制
  • nginx 反向代理可以隐藏 v2ray 的真实 IP 地址
  • 支持多用户管理和流量控制

下面我们将详细介绍如何搭建这样一个代理服务。

准备工作

在开始之前,需要准备以下条件:

  • 一台可以访问互联网的服务器,操作系统建议使用 Linux
  • 一个可用的域名,并将域名解析到服务器 IP
  • 安装 v2ray 和 nginx 的权限

安装 v2ray

  1. 安装 v2ray:

bash bash <(curl -L https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-release.sh)

  1. 生成 UUID:

bash v2ray uuid

记录下生成的 UUID,后面会用到。

配置 v2ray

  1. 编辑 v2ray 配置文件:

bash vim /etc/v2ray/config.json

  1. 将以下内容替换到配置文件中:

{ “log”: { “access”: “/var/log/v2ray/access.log”, “error”: “/var/log/v2ray/error.log”, “loglevel”: “warning” }, “inbounds”: [ { “port”: 10000, “protocol”: “vmess”, “settings”: { “clients”: [ { “id”: “your_uuid_here”, “alterId”: 64 } ] }, “streamSettings”: { “network”: “ws”, “wsSettings”: { “path”: “/your_path_here” } } } ], “outbounds”: [ { “protocol”: “freedom”, “settings”: {} } ]}

请将 your_uuid_hereyour_path_here 替换为您自己的值。

  1. 启动 v2ray 服务:

bash systemctl start v2ray systemctl enable v2ray

安装 nginx

  1. 安装 nginx:

bash apt-get update apt-get install nginx

  1. 生成 TLS 证书:

bash apt-get install certbot certbot certonly –standalone -d your_domain.com

your_domain.com 替换为您的域名。

配置 nginx

  1. 编辑 nginx 配置文件:

bash vim /etc/nginx/conf.d/default.conf

  1. 将以下内容替换到配置文件中:

nginx server { listen 80; 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-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256;
ssl_prefer_server_ciphers on;

location / {
    proxy_redirect off;
    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 $http_host;
}}

请将 your_domain.com 替换为您的域名。

  1. 启动 nginx 服务:

bash systemctl start nginx systemctl enable nginx

测试连接

在客户端配置 v2ray 时,使用以下信息:

  • 地址(address): your_domain.com
  • 端口(port): 443
  • 用户ID(userId): 您之前生成的 UUID
  • 加密方式(security): auto
  • 传输协议(network): ws
  • WebSocket 路径(wsPath): /your_path_here

连接成功后,您就可以通过代理服务访问互联网了。

常见问题解答

Q: 为什么需要使用 WebSocket 协议?

A: WebSocket 协议可以绕过防火墙的限制,提高代理服务的可用性。相比于 TCP 直连,WebSocket 使用 HTTP 协议进行传输,可以更好地伪装流量,降低被发现的风险。

Q: 为什么需要使用 TLS 加密?

A: TLS 加密可以保护数据传输的安全性,防止流量被监听和劫持。即使被中间人截获,也无法读取原始内容。TLS 加密是构建安全代理服务的基础。

Q: 如何管理多个用户?

A: 在 v2ray 配置文件的 clients 部分,可以添加多个用户 ID。每个用户都有独立的 UUID 和流量控制。通过分发不同的连接信息给用户,可以实现多用户管理。

Q: 如何查看日志和监控服务状态?

A: v2ray 的日志文件位于 /var/log/v2ray/ 目录下,可以查看 access.log 和 error.log 了解连接状况和错误信息。

使用 systemctl status v2raysystemctl status nginx 可以查看服务的运行状态。

Q: 如何定期更新证书?

A: Certbot 工具可以自动更新 Let’s Encrypt 签发的证书。可以设置定时任务,定期执行 certbot renew 命令来更新证书。

正文完