Caddy 代替 Nginx 实现 SSL 证书自动续期
官网:https://caddyserver.com/
准备 docker-compose.yml
当然也可自行官网下载二进制文件或 apt install
等直接安装
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| services: caddy: image: caddy:2.8.4-alpine restart: always cap_add: - NET_ADMIN ports: - "80:80" - "443:443" - "443:443/udp" volumes: - ./Caddyfile:/etc/caddy/Caddyfile - ./site:/srv
volumes: caddy_data: caddy_config:
|
准备 Caddyfile
反向代理
1 2 3 4
| # 你的域名,记得将域名解析到你的服务器,并开启80 443安全组 your.example.com { reverse_proxy http://192.168.100.100:8080 # 你的应用地址,一般ip:port }
|
运行
等待片刻访问域名即可,SSL已自动装配并会自动续期
若无法访问一般是域名解析没配置或安全组没开,也可以通过以下命令查看日志,确认是否有报错
更多
一般服务器上会部署多个应用,多复制一份即可
1 2 3 4 5 6 7
| a.example.com { reverse_proxy http://192.168.100.100:8080 }
b.example.com { reverse_proxy http://192.168.100.100:18080 }
|
若需要匹配前缀
1 2 3
| your.example.com { reverse_proxy /webapi/* http://192.168.100.100:8080 }
|
若需要传递请求头例如 Host
1 2 3 4 5
| your.example.com { reverse_proxy http://192.168.100.100:8080 { header_up Host "real.example.com" } }
|
若需要部署静态站点
1 2 3 4 5
| your.example.com { root * /srv/html # 指向容器内目录,并在主机外对应目录放置文件 ./site/html encode gzip # 开启gzip file_server }
|
更多用法可查看 https://caddyserver.com/docs/caddyfile-tutorial