Debian / Ubuntu 安装 Caddy

本文将指导如何在 Debian 和 Ubuntu 下安装 Caddy。

什么是 Caddy?

Caddy 是一款开源的 Web 服务器,它设计简单,易于使用,并且有很多强大的功能。它可以自动处理 TLS (SSL),并且可以使用中间件扩展功能。

Caddy 采用简单的配置语法,可以轻松配置路由,反向代理,重定向,缓存和其他功能。它还支持 HTTP/2,QUIC (HTTP/3) 和 WebSockets 协议,可以提供快速的网络性能。

为什么尝试 Caddy?

对我来说比较简单的原因是 nginx-quic 这个项目一直未发布正式版,想要一款简单的能支持 HTTP/3 的 Web 服务器软件,目前来说 Caddy 的选择是最合适的。

Caddy 还支持自动化证书,对于懒人来说特别合适。

安装 Caddy

我们按照官方的安装方法,首先,安装一些必要的软件包:

apt update apt upgrade -y 
apt install curl vim wget gnupg dpkg 
apt-transport-https lsb-release ca-certificates

然后加入 Caddy 的 GPG 公钥和 apt 源:

curl -sSL https://dl.cloudsmith.io/public/caddy/stable/gpg.key | gpg --dearmor > /usr/share/keyrings/caddy.gpg 
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/caddy.gpg] https://dl.cloudsmith.io/public/caddy/stable/deb/debian any-version main" > /etc/apt/sources.list.d/caddy.list

然后更新系统后即可安装 Caddy:

apt update 
apt install caddy
 

配置 Caddy

默认的 Caddyfile 文件位于 /etc/caddy/Caddyfile,官方的教程在这儿,如果你习惯了 Nginx 和 Apache 的配置,那么此时应该会非常不习惯,我们就来一个最简单的例子把:

  1. 我们需要绑定域名 example.com
  2. 这个域名的文件位于 /var/www/example.com,默认首页文件名为 index.html
  3. 我们需要开启 SSL 访问,并且访问 http 跳转到 https
  4. 我们需要设置开启 TLS 1.2 和 TLS 1.3,并开启 HSTS Preload

首先,设置 http://example.com/ 跳转到 https://example.com/

注意:默认情况如果下面的 example.com:80 和 example.com:443 没有配置其他的端口,Caddy 会自动使用 443 端口,并自动开启 http://example.com/ 跳转到 https://example.com/,这里的示范是为了给有些奇怪的需求比如一些特定的端口访问 HTTP 和 HTTPS,则需要手动配置。

然后我们按照 Mozilla 的推荐配置写入 Caddyfile

example.com:443 { 
	tls { 
		protocols tls1.2 tls1.3 
		ciphers TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 
	} 
	
	header { 
		Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" 
		Referrer-Policy strict-origin-when-cross-origin 
		X-Frame-Options SAMEORIGIN 
		X-Content-Type-Options nosniff 
		X-XSS-Protection "1; mode=block" 
	} 
	
	root * /var/www/example.com file_server { 
		index index.html 
	} 
	
	encode gzip zstd
}

 

当然也可以设置 www.example.com 跳转 example.com

www.example.com:80 { 
	redir https://example.com{uri} permanent 
} 
www.example.com:443 { 
	redir https://example.com{uri} permanent 
}

然后把以上所有内容合并成一个 Caddyfile 文件,放到 /etc/caddy/Caddyfile,然后检查 Caddy 配置:

caddy validate --config /etc/caddy/Caddyfile

 

输出如下内容则表示配置正确:

root@debian ~ # caddy validate --config /etc/caddy/Caddyfile 
2022/12/26 17:31:22.347 INFO using provided configuration {"config_file": "/etc/caddy/Caddyfile", "config_adapter": ""} 
2022/12/26 17:31:22.349 WARN http server is listening only on the HTTP port, so no automatic HTTPS will be applied to this server {"server_name": "srv1", "http_port": 80} 
2022/12/26 17:31:22.349 INFO http enabling automatic HTTP->HTTPS redirects {"server_name": "srv0"} 
2022/12/26 17:31:22.349 INFO tls.cache.maintenance started background certificate maintenance {"cache": "0xc00018ad90"} 
2022/12/26 17:31:22.350 INFO tls.cache.maintenance stopped background certificate maintenance {"cache": "0xc00018ad90"} Valid configuration
 

有强迫症的也可以把你的 Caddyfile 文件美化一下:

caddy fmt /etc/caddy/Caddyfile --overwrite
 

最后重启 Caddy

systemctl restart caddy
 

耐心等待自动签发 SSL 证书,然后我们就可以打开浏览器控制台查看 https://example.com/ 即可看到 SSL 证书已经自动部署,同时 HTTP/3 已经开启了:

20250422084712674-e3e00d

 

更多的配置可以参考官方文档《Caddyfile 语法浅析》

Debian / Ubuntu 安装 Caddy
无责任编辑 Showfom 发布时间 Dec 27th, 2022 版权协议 WTFPL

 

 
© 版权声明
THE END
喜欢就支持一下吧
点赞11赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片快捷回复

    暂无评论内容