# Caddy 的使用
# 简单的介绍
Caddy
是一个轻量级的 HTTP/2 服务器,具有自动 HTTPS 功能,并且可以轻松配置。它支持多种协议,包括 HTTP/2、HTTP/1.1、WebSocket、gRPC 等,并且可以处理静态文件、反向代理、负载均衡、SSL/TLS 等任务。
基于配置简单的原因,在一些场景下可以平替 Nginx,更轻松的部署服务器。
# caddy 的功能
- 自动 HTTPS:Caddy 可以自动为网站提供 SSL/TLS 证书,无需手动配置。
- 简单配置:Caddy 的配置文件非常简单,易于理解和修改。
- 多协议支持:Caddy 支持多种协议,包括 HTTP/2、HTTP/1.1、WebSocket、gRPC 等。
- 反向代理:Caddy 可以轻松配置反向代理,将请求转发到其他服务器。
- 负载均衡:Caddy 可以配置负载均衡,将请求分发到多个服务器。
- 静态文件处理:Caddy 可以处理静态文件,包括 HTML、CSS、JavaScript、图片等。
- 日志记录:Caddy 可以记录访问日志,包括请求 URL、响应状态码、请求时间等。
- 插件支持:Caddy 支持多种插件,可以扩展其功能。
# caddy 跟 nginx 的对比
- Caddy 的配置文件更简单,更易于理解和修改。
- Caddy 支持自动 HTTPS,无需手动配置。
- Caddy 的静态文件处理更简单,无需手动配置。
- Caddy 的日志记录更详细,包括请求 URL、响应状态码、请求时间等。
性能对比:虽然 Caddy 在配置简单性和安全性方面具有优势,但在处理高并发请求时,Nginx 可能更为适合。
这是因为 Nginx 经过长时间的发展和优化,已经在生产环境中证明了其在处理大量并发连接时的稳定性和效率。
此外,Nginx 的社区支持和广泛的插件生态系统也是其受欢迎的原因之一,因此在处理一些小的并发量上,Caddy 更容易上手
# caddy 的使用(只介绍 linux 下的使用)
# linux 安装
Caddy 的安装非常简单,可以通过以下命令进行安装:
- 安装 Caddy
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl | |
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg | |
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list | |
sudo apt update | |
sudo apt install caddy |
默认情况下,caddy 的配置文件会在 /etc/caddy/Caddyfile, 没有后缀
- 启动 Caddy
sudo systemctl start caddy --config<指定配置文件路径> 默认会去/etc/caddy/Caddyfile | |
#或者 | |
sudo caddy run --config 默认会去/etc/caddy/Caddyfile | |
#查看启动状态 | |
sudo systemctl status caddy | |
#停止 caddy | |
sudo systemctl stop caddy || caddy stop | |
#重启 caddy | |
sudo systemctl restart caddy || caddy restart | |
#如果修改了配置文件,可以通过一下命令刷新配置 | |
sudo caddy reload |
配置 Caddy (官方文档)
- 文件服务
:10100
{
root * /opt/
file_server
}
- 文件预览服务
:10100
{
root * /opt/
file_server browse
}
- 反向代理
:10100
{
root * /opt/
reverse_proxy /community/* eco.dameng.com
file_server browse
}
- 重定向
:10100
{
root * /opt/
reverse_proxy /community/* eco.dameng.com
redir /info/* https://eco.dameng.com{uri}
file_server browse
}
- 重写
:10100
{
root * /opt/
reverse_proxy /community/* eco.dameng.com
redir /info/* https://eco.dameng.com{uri}
rewrite /test1.html /test.html
file_server browse
}
- 单页面应用
example.com
{
encode gzip
handle /api/* {
reverse_proxy backend:8000
}
handle {
root * /path/to/site
try_files {path} /index.html
file_server
}
- 日志配置
{ | |
debug | |
log { | |
output file /var/log/access.log | |
} | |
} | |
:10100 | |
{ | |
root * /opt/ | |
reverse_proxy /community/* eco.dameng.com | |
redir /info/* https://eco.dameng.com{uri} | |
rewrite /test1.html /test.html | |
file_server browse | |
} |