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/
|