目录
前言
在日常上网过程中,我们经常会遇到各种网络限制和屏蔽,导致无法访问某些网站或服务。为了突破这些限制,我们需要使用代理服务来进行翻墙。
本文将详细介绍如何使用 v2ray 搭建基于 websocket+TLS 的代理服务,并结合 Nginx 或 Caddy 进行反向代理和 SSL/TLS 证书管理,为用户提供安全可靠的翻墙解决方案。
环境准备
系统要求
- 操作系统: Linux (Ubuntu/CentOS/Debian 等)
- 服务器配置: 最低 1GB 内存, 1 核 CPU
域名准备
为了保证服务的安全性,我们需要提前准备一个域名。域名可以是自己购买的,也可以使用免费的动态域名服务。
v2ray 服务端配置
安装 v2ray
v2ray 是一款功能强大的代理工具,可以提供各种协议的代理服务。我们这里选择使用 v2ray 的 websocket 协议,并配合 TLS 加密传输。
在服务器上安装 v2ray 可以使用以下命令:
bash
bash <(curl -L https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-release.sh)
配置 v2ray
v2ray 的配置文件位于 /etc/v2ray/config.json
。我们需要修改该文件,添加 websocket 和 TLS 相关的配置:
{ “inbounds”: [ { “port”: 443, “protocol”: “vmess”, “settings”: { “clients”: [ { “id”: “your-uuid”, “alterId”: 64 } ] }, “streamSettings”: { “network”: “ws”, “wsSettings”: { “path”: “/your-path” }, “security”: “tls”, “tlsSettings”: { “certificates”: [ { “certificateFile”: “/path/to/fullchain.pem”, “keyFile”: “/path/to/privkey.pem” } ] } } } ], “outbounds”: [ { “protocol”: “freedom” } ]}
在这个配置文件中,我们设置了以下关键项:
port
: 监听端口,这里我们使用 443 端口,因为 HTTPS 默认使用该端口。protocol
: 协议类型,这里我们使用 vmess。id
: 用户 ID,需要填写你自己的 UUID。network
: 传输协议,这里我们使用 websocket。path
: websocket 的路径,可以自定义。security
: 安全性协议,这里我们使用 TLS。certificateFile
和keyFile
: TLS 证书和私钥文件的路径。
修改完成后,保存文件并重启 v2ray 服务:
bash systemctl restart v2ray
Nginx 反向代理配置
安装 Nginx
Nginx 是一款功能强大的 Web 服务器,我们可以使用它来进行反向代理,并管理 SSL/TLS 证书。
在服务器上安装 Nginx 可以使用以下命令:
bash
apt-get update apt-get install -y nginx
配置 Nginx
Nginx 的配置文件位于 /etc/nginx/conf.d/default.conf
。我们需要修改该文件,添加反向代理和 TLS 相关的配置:
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 /path/to/fullchain.pem;
ssl_certificate_key /path/to/privkey.pem;
location /your-path {
proxy_pass http://127.0.0.1:443;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
}}
在这个配置文件中,我们设置了以下关键项:
- 监听 80 端口并自动跳转到 HTTPS。
- 监听 443 端口并配置 TLS 证书。
- 设置反向代理,将
/your-path
的请求转发到本地 v2ray 服务。
修改完成后,保存文件并重启 Nginx 服务:
bash systemctl restart nginx
Caddy 反向代理配置
安装 Caddy
Caddy 是一款功能强大的 Web 服务器,它可以自动管理 SSL/TLS 证书,并提供反向代理功能。
在服务器上安装 Caddy 可以使用以下命令:
bash
curl -s https://getcaddy.com | sudo bash -s personal
配置 Caddy
Caddy 的配置文件位于 /etc/caddy/Caddyfile
。我们需要修改该文件,添加反向代理和 TLS 相关的配置:
your-domain.com { reverse_proxy 127.0.0.1:443 { header_up Host {host} header_up Upgrade {http.request.header.Upgrade} header_up Connection {http.request.header.Connection} }}
在这个配置文件中,我们设置了以下关键项:
- 监听
your-domain.com
域名。 - 将请求反向代理到本地 v2ray 服务。
- 转发相关的 HTTP 头信息,确保 websocket 协议正常工作。
修改完成后,保存文件并重启 Caddy 服务:
bash systemctl restart caddy
客户端配置
Windows 客户端
- 下载并安装 V2RayN 客户端: https://github.com/2dust/v2rayN/releases
- 打开 V2RayN,选择 “订阅” -> “添加订阅地址”,输入 v2ray 服务端提供的订阅链接。
- 选择订阅中的节点,并点击 “连接” 即可。
Android 客户端
- 下载并安装 V2RayNG 客户端: https://github.com/2dust/v2rayNG/releases
- 打开 V2RayNG,选择 “订阅” -> “添加订阅”,输入 v2ray 服务端提供的订阅链接。
- 选择订阅中的节点,并点击 “连接” 即可。
iOS 客户端
- 下载并安装 Shadowrocket 客户端: https://apps.apple.com/us/app/shadowrocket/id932747118
- 打开 Shadowrocket,选择 “+” -> “Subscribe”,输入 v2ray 服务端提供的订阅链接。
- 选择订阅中的节点,并点击 “开启” 即可。
常见问题 FAQ
为什么要使用 websocket 协议?
websocket 协议是一种基于 HTTP 的全双工通信协议,它可以提供持久性的连接,并且可以穿越防火墙和 NAT 设备。这使得它非常适合用于代理服务,可以提高连接的稳定性和可靠性。
为什么要使用 TLS 加密?
TLS 加密可以确保通信过程的安全性,防止中间人攻击和数据窃取。在进行翻墙等敏感操作时,使用 TLS 加密非常重要,可以保护用户的隐私和安全。
Nginx 和 Caddy 有什么区别?
Nginx 和 Caddy 都是常用的 Web 服务器,它们都可以用于反向代理和 SSL/TLS 证书管理。主要区别在于:
- Nginx 需要手动配置 SSL/TLS 证书,而 Caddy 可以自动获取和更新证书。
- Caddy 配置相对简单,Nginx 配置相对复杂。
- Caddy 默认启用 HTTP/2,Nginx 需要额外配置。
如何选择 Nginx 还是 Caddy?
如果你熟悉 Nginx 的配置,并且需要更多的定制化功能,那么选择 Nginx 会更合适。如果你希望更简单的配置和自动化的 SSL/TLS 证书管理,那么选择 Caddy 会更方便。两者各有优缺点,需要根据具体需求进行选择。