Caddy2搭建HTTPS正向代理
由于Caddy v1官方已经放弃,所以这篇文章也更新一下,使用Caddy v2打入forwardproxy插件快速搭建HTTPS正向代理,毕竟Caddy自动请求SSL证书,能够省下许多不必要的折腾。
申请域名和填写DNS记录
首先你要注册一个免费域名,这个可以到Freenom上免费搞一个,不多讲。
域名注册好后,需要添加DNS记录,如果没有v6IP的话,就填一个v4IP的A记录,如下:
Name (prefix) | Type | TTL | Target |
---|---|---|---|
A | 3600 | 这里填写vps上的v4IP | |
AAAA | 3600 | vps上的v6IP,没有可不填 |
上面完成后,就开始服务端的配置了。
服务端安装Caddy2
下载编译caddy2和http.forwardproxy插件,v2版需要自己编译打入插件,所以俺编译了一个带forwardproxy插件的最新v2.2.0版:
wget -P /usr/bin/ https://hostalk.net/cloud/docs/caddy
chmod +x /usr/bin/caddy
这个时候caddy二进制文件也就下载到/usr/bin/
里去了,直接caddy run
就可以运行。
当然,可能有人会不喜欢别人编译的版本,那么下面说说怎么自己编译caddy2并打入插件。
服务端编译Caddy2
这一步是非必须的,如果不会自己编译就用上面俺编译的版本也是一样。
配置Go
下载go并解压到/usr/local
路径下:
wget https://dl.google.com/go/go1.14.linux-amd64.tar.gz -O - | tar -xz -C /usr/local/
设置go环境变量,也可以写入到profile中
vi ~/.profile
添加下面内容:
1 | export PATH=$PATH:/usr/local/go/bin |
保存后,source ~/.profile
下载Xcaddy
wget https://github.com/caddyserver/xcaddy/releases/download/v0.1.5/xcaddy_0.1.5_linux_amd64.tar.gz -O - | tar -xz -C /usr/bin/
运行xcaddy并打入forwardproxy@caddy2插件
1 | xcaddy build master \ |
编译完成后caddy二进制文件会在root目录下,俺们可以移到/usr/bin/
下运行:
mv caddy /usr/bin
配置caddy.json文件
上面安装好caddy2后,现在就来配置caddy.json文件,caddy v2的配置文件改成json后,有点复杂,博主也是折腾了好久。
新建一个caddy文件夹,存放caddy.json文件
mkdir -p /etc/caddy
vi /etc/caddy/caddy.json
编写caddy.json文件,添加内容如下:
1 | { |
上面需要修改的地方是自己的域名,添加自己的邮箱,添加用户名和密码就可以了。
caddy.json文件建议本地编辑好后再scp到服务端,vi修改容易换行错误,用时请删除上面的中文注释。
检查80端口有没有被其它服务占用,因为caddy需要用80/443端口申请证书,否则会启动失败。下面命令检查端口占用情况:
netstat -lntp
上面配置、检查完就可以启动caddy了,启动命令如下:
caddy run --config /etc/caddy/caddy.json
如果启动后,出现申请证书不成功的情况,一般是因为域名已经申请过证书导致的,建议DNS解析页面新建一个子域名,重新配置、启动申请证书。
启动后会发现,caddy一直在前台运行,很不方便,这个时候俺们就需要注册systemctl服务,用systemctl来启动caddy。
注册systemd服务
新建caddy.service
文件,命令:
vi /etc/systemd/system/caddy.service
添加如下内容
1 | [Unit] |
重载systemctl服务 systemctl daemon-reload
到这也就可以启动caddy了,启动命令
systemctl start caddy
#启动
systemctl restart caddy
#重启
systemctl status caddy
#查看状态
systemctl stop caddy
#停止
systemctl enable caddy
#添加开机自启动
服务端到此也就部署完成了,下面来折腾客户端。https正向代理,不必多讲,安全、快捷,电脑端不用另装客户端,移动端大多APP都支持http/https代理。
客户端配置
电脑端浏览器安装SwitchyOmega插件,新建一个代理情景模式,代理协议填写HTTPS,代理服务器填写你的域名,端口填写你使用的端口,没有另外设置的话就填443,最后点击右边小锁,填写你的用户名和密码,就可以使用了,如果需要分流的话,可以另建立一个自动切换模式。
在SwitchyOmega插件上设置代理自动分流模式,另新建一个自动切换模式,设置如下图:
AutoProxy:https://raw.githubusercontent.com/gfwlist/gfwlist/master/gfwlist.txt
移动端,俺们以小火箭和Quantumult X为例,小火箭,选择https代理,服务器填写你的域名,其它看图:
Quantumult X 配置文件/编辑/server_local字头下填写:
http=你的域名:443, username=用户名, password=密码, over-tls=true, tls-verification=true, tls-host=你的域名, fast-open=false, udp-relay=false, tls13=false, tag=caddy2
最后推荐几个移动端支持https代理软件,iOS:Quantumult X ,小火箭, Android:Clash Surfboard.
参考: