欢迎来到好人卡资源网,专注网络技术资源收集,我们不仅是网络资源的搬运工,也生产原创资源。寻找资源请留言或关注公众号:烈日下的男人

Caddy2搭建HTTPS正向代理

linux sky995 2年前 (2021-11-23) 4295次浏览 0个评论

本文及资源最后更新时间 2021-11-23 by sky995

使用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://111111.online/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
2
3
4
5
export PATH=$PATH:/usr/local/go/bin
export PATH=$PATH:$HOME/.cargo/bin
export GOROOT=/usr/local/go
export GOBIN=$GOROOT/bin
export PATH=$PATH:$GOBIN

保存后,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
2
xcaddy build master \
    --with github.com/caddyserver/forwardproxy@caddy2

编译完成后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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
{
    "admin": {"disabled": true},
    "apps": {
        "http": {
            "servers": {
                "srv0": {
                    "listen": [":443"],
                    "logs": {},
                    "routes": [{
                        "handle": [{
                            "handler": "forward_proxy",
                            "hide_ip": true,  //隐藏客户端IP
                            "hide_via": true,
                            "auth_user": "uname", //用户名
                            "auth_pass": "password"  //密码
                        }]
                    }, 
                    {
                    "match": [{"host": ["xxxx.com"]}],  //域名
                    "handle": [{
                        "handler": "file_server",
                        "root": "/var/www/html"   //网站根目录
                    }],
                    "terminal": false
                    }],
                    "tls_connection_policies": [{
                        "match": {"sni": ["xxxx.com"]}  //域名
                    }],
                    "experimental_http3": false,     //未开启UDP,false改成true即可开启
                    "allow_h2c": false      //未开启h2c,false改成true即可开启
                }
            }
        },
        "tls": {
            "automation": {
                "policies": [{
                    "subjects": ["xxxx.com"],  //域名
                    "issuer": {
                        "email": "email@email",  //申请证书邮箱
                        "module": "acme"
                    }
                }]
            }
        }
    }
}

上面需要修改的地方是自己的域名,添加自己的邮箱,添加用户名和密码就可以了。

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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[Unit]
Description=Caddy
Documentation=https://caddyserver.com/docs/
After=network.target

[Service]
User=root
ExecStart=/usr/bin/caddy run --environ --config /etc/caddy/caddy.json
ExecReload=/usr/bin/caddy reload --config /etc/caddy/caddy.json
TimeoutStopSec=5s
LimitNOFILE=1048576
LimitNPROC=512
PrivateTmp=true
ProtectSystem=full
AmbientCapabilities=CAP_NET_BIND_SERVICE

[Install]
WantedBy=multi-user.target

重载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,最后点击右边小锁,填写你的用户名和密码,就可以使用了,如果需要分流的话,可以另建立一个自动切换模式。

Caddy2搭建HTTPS正向代理

在SwitchyOmega插件上设置代理自动分流模式,另新建一个自动切换模式,设置如下图:

Caddy2搭建HTTPS正向代理

AutoProxy:https://raw.githubusercontent.com/gfwlist/gfwlist/master/gfwlist.txt

移动端,俺们以小火箭和Quantumult X为例,小火箭,选择https代理,服务器填写你的域名,其它看图:

Caddy2搭建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.

参考:


好人卡资源网 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Caddy2搭建HTTPS正向代理
喜欢 (1)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址