乐于分享
好东西不私藏

Caddy:安装、使用和配置指南

Caddy:安装、使用和配置指南

Caddy:安装、使用和配置指南

Caddy 是一个用 Go 语言编写的现代化开源 Web 服务器,以其自动 HTTPS 功能著称——它能自动获取和续期 Let’s Encrypt 证书,无需手动配置。Caddy 采用简洁的 Caddyfile 配置格式,默认启用 HTTP/2,并内置了反向代理、负载均衡、静态文件服务、日志管理等功能,非常适合作为微服务网关或静态站点托管服务器。

一、部署Caddy(Ubuntu/Debian)

参考官方安装文档:Install — Caddy Documentation

1.安装

sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curlcurl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpgcurl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.listsudo chmod o+r /usr/share/keyrings/caddy-stable-archive-keyring.gpgsudo chmod o+r /etc/apt/sources.list.d/caddy-stable.listsudo apt updatesudo apt install caddy

2.验证版本

caddy -v#返回版本号:v2.11.3 h1:/vFbdjcs2DtzcWTIxHybf5R5TspYFFThlZffChyBFHg=

二、使用Caddy

1.静态网站

(1)新建网站目录+测试页面
mkdir -p /www/webecho "<h1>Hello Caddy</h1>" > /www/web/index.html
(2)写配置Caddyfile
vim /etc/caddy/Caddyfile
(3)内容改成以下配置
:80 {    root * /www/web         #指定网站文件放在 /www/web    file_server browse      #browse 允许浏览目录    encode gzip zstd        #开启网页压缩,加速访问}
(4)重载配置
caddy reload --config /etc/caddy/Caddyfile
(5)访问网页

浏览器中访问 http://你的服务器IP/ ,成功打开测试页面

2.反向代理

我们利用反向代理,把/api/路径请求转发到8090端口(用docker部署的nginx)

(1)修改配置文件/etc/caddy/Caddyfile
:80 {    root * /www/web    file_server browse    encode gzip zstd    @api path /api /api/*    handle @api {        uri strip_prefix /api        reverse_proxy localhost:8090    }}
(2)重载配置
caddy reload --config /etc/caddy/Caddyfile
(3)浏览器访问

浏览器访问 http://你的服务器IP/api/ ,成功通过反向代理访问到了NGINX欢迎页面

3.域名 + 自动 HTTPS

前提条件:

  • 域名已经解析到 Caddy 服务器IP

  • 安全组放行 80、443 端口

(1)修改配置

修改配置文件/etc/caddy/Caddyfile,增加域名配置与邮箱

caddy.XXXX.com {   #填你的域名    tls XXXXX@XXXX.com  #填写邮箱    root * /www/web    file_server browse    encode gzip zstd    @api path /api /api/*    handle @api {        uri strip_prefix /api        reverse_proxy localhost:8090    }}# http 跳转 https:80 {    redir https://{host}{uri} permanent}
(2)重载配置
caddy reload --config /etc/caddy/Caddyfile
(3)域名访问

浏览器访问 [你的域名] 可以看到已经有https证书!

三、进阶实用配置

1.隐藏服务器标识、开启 HSTS 强制 HTTPS

在 root * /www/web 下面添加:

# 隐藏 Caddy 版本,防止被扫描攻击header -Server# 浏览器强制HTTPS,一年有效期,子域名也生效header Strict-Transport-Security "max-age=31536000; includeSubDomains"# 禁止iframe嵌套,防钓鱼header X-Frame-Options DENY# 开启跨域安全header X-Content-Type-Options nosniff

2.自定义404/500错误页(可选)

# 错误页处理,网页路径/www/webhandle_errors {    rewrite * /{http.error.status_code}.html    file_server}

3.开启访问日志

    log {        output file /var/log/caddy/caddy.log    }