Caddy是一个go开发的http反向代理服务器,支持自动获取SSL证书

自动配置ssl的代理服务器Caddy

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
中文官方文档地址:
https://dengxiaolong.com/caddy/zh/


github下载地址
https://github.com/caddyserver/caddy/releases/tag/v1.0.4

安装
wget https://github.com/caddyserver/caddy/releases/download/v1.0.4/caddy_v1.0.4_linux_arm64.tar.gz
wget https://github.com/caddyserver/caddy/releases/download/v1.0.4/caddy_v1.0.4_linux_amd64.tar.gz
tar -xzf caddy*.tar.gz caddy
mv ./caddy /usr/local/bin
后面就可以创建配置文件了


配置文件需要自己放一个路径,推荐放在,编写格式参考文档即可
/etc/caddy/Caddyfile

启动服务器
caddy

后台启动
nohup caddy &

关闭
ps -aux | grep caddy

让caddy后面支持nginx识别域名(多层反向代理)

使用场景:
所有域名都使用反向代理,然后转发到nginx负责的http端口
nginx直接识别到域名

可以对现在已有的http协议的nginx服务器无痛迁移,直接平滑反向代理就可以了

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
caddy 
test.example.com {
proxy / 127.0.0.1:8080 {
header_upstream Host {host}
header_upstream X-Real-IP {remote}
header_upstream X-Forwarded-For {remote}
header_upstream X-Forwarded-Proto {scheme}
}
gzip
header / Server

}


nginx
server {
listen 8080;
server_name test.example.com;
charset utf-8;

access_log logs/host.access.log openwrt;

location / {
root /www;
index index.html index.htm;
}
error_page 404 /404.html;
location = /404.html {
root /www;
}
}

注册服务

官方提供的脚本地址:

1
https://github.com/mholt/caddy/blob/master/dist/init/linux-systemd/caddy.service

centos操作

1
2
把这个文件下载到 /etc/systemd/system/ 。
sudo curl -s https://raw.githubusercontent.com/mholt/caddy/master/dist/init/linux-systemd/caddy.service -o /etc/systemd/system/caddy.service

创建所需目录,我图方便没有修改脚本直接使用默认值了,如果有特殊需求,可以自己更改目录。

1
2
3
4
5
6
7
8
9
10
sudo mkdir /etc/caddy
sudo chown -R root:www-data /etc/caddy
sudo touch /etc/caddy/Caddyfile

sudo mkdir /etc/ssl/caddy
sudo chown -R www-data:root /etc/ssl/caddy
sudo chmod 0770 /etc/ssl/caddy

sudo mkdir /var/www
sudo chown www-data:www-data /var/www

上面创建了三个目录,/etc/caddy 用了存放 Caddy 的配置文件,/etc/ssl/caddy 存放证书,/var/www 是默认的网站目录。

接着,重新加载 systemd daemon,让配置生效。

1
sudo systemctl daemon-reload

让 Caddy 开机自启。

1
sudo systemctl enable caddy.service

至此,Caddy 已经成功注册服务,并能够开机自启了

参考配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
example.com {
proxy / 127.0.0.1:9001 {
header_upstream Host {host}
header_upstream X-Real-IP {remote}
header_upstream X-Forwarded-For {remote}
header_upstream X-Forwarded-Proto {scheme}
}
gzip
header / -Server
header / Strict-Transport-Security "max-age=31536000;"
tls user@example.com {
protocols tls1.0 tls1.2
dns cloudflare
}
}

写完配置后输入 sudo systemctl start caddy.service 启动 Caddy。
输入 journalctl –boot -u caddy.service 可以查看日志。

参考链接

1
https://www.giuem.com/caddy-tutorial-for-debian/