v2ray ws tls nginx 配置教程

目录

  1. 简介
  2. 环境准备
  3. 配置v2ray
    1. 生成证书
    2. 配置v2ray服务端
    3. 配置v2ray客户端
  4. 配置Nginx
    1. 安装Nginx
    2. 配置Nginx反向代理
  5. 测试连接
  6. 常见问题FAQ

简介

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 免费证书为例:

  1. 安装 Certbot 工具:

sudo apt-get update sudo apt-get install certbot

  1. 生成证书:

sudo certbot certonly –standalone -d your-domain.com

证书文件位于 /etc/letsencrypt/live/your-domain.com 目录下。

配置v2ray服务端

  1. 安装 v2ray:

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

  1. 编辑 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-uuidyour-domain.comyour-path 为您自己的信息。

  1. 启动 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

  1. 安装 Nginx:

sudo apt-get update sudo apt-get install nginx

  1. 检查Nginx是否运行:

sudo systemctl status nginx

配置Nginx反向代理

  1. 编辑 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 为您自己的域名。

  2. 重启 Nginx:

sudo systemctl restart nginx

测试连接

在客户端连接 v2ray 服务器,访问 https://your-domain.com 即可测试是否成功。

常见问题FAQ

  1. 如何查看v2ray日志?

    • 日志文件位于 /var/log/v2ray/access.log/var/log/v2ray/error.log,可以使用 tail -n 100 /var/log/v2ray/error.log 查看最新的100行错误日志。
  2. 为什么连接v2ray总是失败?

    • 检查服务器防火墙是否开放了443端口
    • 检查v2ray配置文件中的UUID、path等信息是否正确
    • 检查Nginx配置文件中的域名和证书路径是否正确
  3. 如何更新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 进行更新
  4. 如何查看v2ray当前连接状态?

    • 使用 sudo systemctl status v2ray 命令查看v2ray服务状态
    • 查看 /var/log/v2ray/access.log 日志文件中的连接信息
  5. 如何自定义v2ray的WebSocket路径?

    • 在v2ray服务端配置文件的 wsSettings.path 字段中修改路径
    • 同时需要在Nginx配置文件的 location 块中修改对应的路径
正文完