V2ray with Caddy + HTTP2 + TLS
Contents
[NOTE] Updated May 31, 2023. This article may have outdated content or subject matter.
由于经常需要访问 GitHub 等外网,就需要有一个快速响应的代理。
之前尝试过 v2ray 直连 、WebSocket + TLS + Web 的方式。
直连是比较快的,不需要进行 TLS 连接等操作,但应用 TLS 可以更好地防检测。
用了很长时间 WebSocket + TLS + Web 的组合,一直都比较稳定。
周末时翻到一篇关于 HTTP2 的搭建,有一个网站比较了 HTTP/1.1 和 HTTP2 的 加载速度,发现 HTTP2 是真的很快,就想着重新部署一个代理,看是否有更好 的体验。
由于换了服务器,现在不太确定是服务器影响还是 HTTP2 的影响,速度上要比 之前的好一些。
这篇博客主要记录 V2ray + Caddy + HTTP2 + TLS 的相关配置,其它具体细节 请参考 V2ray 新白话文教程以及官网。
准备
-
一台国外的 VPS
目前我用的是 VULTR,价格可能有一些贵,但稳定,速度也还可以,另外也 支持支付宝充值 -
一个域名
可以找个网站买一个便宜的域名,腾讯也有域名可以卖 -
一些基础的知识
简单的命令行操作;Web 服务器的部署,配置,排错;了解怎么在服务器编辑文件
搭建
这次搭建主要是参考了 HTTP/2+TLS+WEB,里头用到了 Caddy 作为 Web 服务器, 不过他用的是 Caddy1,而我用的是 Caddy2。
除了 Caddy, 其实还能用 Nginx,Apache 去做 Web 服务器,不过 Caddy 相 对来说使用上更简单方便。
之前搭建 WebSocket + TLS + Web 的时候是用的 Nginx,为了实现 TLS,需 要去 Let's Encrypt 申请证书,这篇教程里有介绍怎么申请。
而 Caddy 默认是开启 HTTPS 的,当你配置了域名,他会自动帮你从 Let's Encrypt 申请证书,到期了自动帮你更新,所以省去了不少步骤。
Tag 释义
下面配置中的 <tag> 是需要自己配置的,替换成对应的值。
tag | 含义 |
---|---|
<uuid> | 可以用 uuidgen 指令生成,是客户端服务器通讯用的标识 |
<http2-path> | http2 配置的路径 |
<v2ray-port> | v2ray 监听的端口 |
<domain> | 申请的域名,例如 hello.world |
<root-path> | 静态文件路径,例如 /root/÷site |
<email> | 邮箱 |
1. 购买一个 VPS 服务器
可以从 VULTR 购买,如果有更快,更稳定,价格不是很贵的提供商,欢迎留言推荐。
搭建代理不需要很高的配置,买一个最低配置的 VPS 即可,考虑到 CentOS 不再维护,我安装的是 Ubuntu,总之找一个自己熟悉的 linux 操作系统即 可。
Ubuntu 的一个好处是配置防火墙的指令 ufw 相对 CentOS 的 firewall-cmd 而言用起来比较简单。
服务器部署好之后,可以将 443 和 80 端口打开,443 作为 Web 服务器的 访问端口,80 是开放给 Let's Encrypt 注册的。
Ubuntu 的指令是:
|
|
2. 申请一个域名
网上随便找个域名贩卖网站,买一个自己喜欢的域名即可,购买之后,需要 将域名解析到 VPS 的 IP 地址。
3. 安装 & 配置 Caddy
按照 Caddy 的安装步骤 将 Caddy 安装到 VPS 上,具体使用可以看 Caddy 文 档,里头有很多详细的例子。
安装好之后,配置 /etc/caddy/Caddyfile
:
|
|
相关指令:
|
|
4. 安装 & 配置 v2ray
根据 fhs-install-v2ray 安装 v2ray, v2ray 的相关指令和 caddy 类似, 将 caddy 换成 v2ray 即可。
v2ray 服务器配置
配置含义请官网查阅, /usr/local/etc/v2ray/config.json
:
|
|
v2ray 客户端配置
这里提供 ClashX 配置的参考,其它客户端配置类似的。
主要是配置 server, port 指向域名和对应的服务器。
配置 uuid 和服务器的 uuid 保持一致。
配置 http2 的相关 options。
|
|
排障
主要通过查看日志去判断问题是什么,然后 google :)
|
|