官方安装文档
简介
Caddy 是一个现代的开源 Web 服务器,具有以下几个主要特点:
- 自动化 HTTPS
Caddy 自动为所有托管的网站配置 HTTPS,使用 Let's Encrypt 提供的证书。这意味着你无需手动处理证书的生成和续期,极大地简化了安全配置。 - 易于配置
Caddy 使用一个简单的配置文件(Caddyfile),使得配置反向代理、负载均衡、路由等功能变得直观易懂。其语法设计使得用户可以快速上手。 - 反向代理
Caddy 可以轻松配置为反向代理,允许你将请求转发到其他服务或应用程序。这对于微服务架构或多服务应用程序特别有用。 - 插件系统
Caddy 支持插件,可以扩展其功能,例如身份验证、速率限制、监控等。这使得 Caddy 可以适应各种需求。 - 支持 HTTP/2 和 QUIC
Caddy 默认支持 HTTP/2 和 QUIC,这些现代协议提供了更好的性能和用户体验。 - 多平台支持
Caddy 可以在多种操作系统上运行,包括 Linux、Windows 和 macOS。 - 丰富的社区和文档
Caddy 拥有活跃的社区和丰富的文档,用户可以轻松找到所需的支持和示例。
适用场景
- 静态网站托管:Caddy 非常适合托管静态网站。
- API 网关:可以用作 API 的反向代理。
- 微服务架构:在微服务环境中管理请求和负载均衡。
- 开发和测试环境:快速搭建和测试本地开发环境。
安装
以Debian12为例,依次执行命令
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
配置文件路径
/etc/caddy/Caddyfile
服务管理
# 启动Caddy
systemctl start caddy
# 开机自启
systemctl enable caddy
# 重启Caddy2
systemctl restart caddy
# 停止Caddy2
systemctl stop caddy
# 重载配置Caddy配置文件(修改配置文件后执行)
systemctl reload caddy
# 查看Caddy2运行状态
systemctl status caddy
配置示例
# 反向代理
example.com {
reverse_proxy 127.0.0.1:8080 #这里输入你想反代的服务器IP和端口
encode gzip
}
# 反向代理+基本认证
example.com {
basicauth / username password
reverse_proxy localhost:3000
}
# 反向代理+负载均衡
example.com {
reverse_proxy backend1:3000 backend2:3000
}
# 重定向
example.com {
redir https://naiyous.com{uri}
}
更多配置
1. 负载均衡
你可以通过指定多个后端服务器来实现负载均衡。Caddy 会自动在这些服务器之间分配流量。
example.com {
reverse_proxy backend1:3000 backend2:3000 {
lb_policy round_robin
}
}
2. 路由和重定向
你可以配置不同的路由和重定向规则。
example.com {
reverse_proxy /api/* localhost:3001
reverse_proxy /app/* localhost:3002
redir /old-path /new-path 301
}
3. WebSocket 支持
Caddy 支持 WebSocket 代理。你只需像普通的 HTTP 请求一样配置。
example.com {
reverse_proxy /ws/* localhost:3000 {
header_up X-Real-IP {remote}
header_up X-Forwarded-For {remote}
header_up X-Forwarded-Proto {scheme}
}
}
4. SSL/TLS 配置
Caddy 默认启用 HTTPS。如果你需要自定义 SSL/TLS 设置,可以在 Caddyfile 中进行配置。
example.com {
reverse_proxy localhost:3000
tls {
cert_file /path/to/cert.pem
key_file /path/to/key.pem
}
}
5. 基于路径的反向代理
你可以根据请求的路径将请求代理到不同的服务。
example.com {
reverse_proxy /service1/* localhost:3001
reverse_proxy /service2/* localhost:3002
}
6. 自定义错误页面
你可以配置自定义错误页面。
example.com {
reverse_proxy localhost:3000
handle_errors {
respond 404 "Sorry, the page was not found" 404
}
}
7. 添加 HTTP 头
你可以在反向代理请求中添加或修改 HTTP 头。
example.com {
reverse_proxy localhost:3000 {
header_up X-Forwarded-For {remote}
header_up X-Real-IP {remote}
}
}
8. 使用插件
Caddy 有许多插件可以扩展其功能,比如身份验证、速率限制等。你可以根据需要安装这些插件并在 Caddyfile 中配置。
9. 设置速率限制
你可以对请求设置速率限制,以防止滥用。
example.com {
reverse_proxy localhost:3000
rate_limit {
zone rate_limit 10r/s
}
}
10. 访问日志和错误日志
你可以启用访问日志和错误日志来监控请求和错误。
example.com {
reverse_proxy localhost:3000
log {
output file /var/log/caddy/access.log
format json
}
log {
output file /var/log/caddy/error.log
}
}
11.真实ip
header_up
:用于将请求头信息添加到代理请求中。X-Real-IP
:直接传递客户端的 IP 地址。X-Forwarded-For
:包含客户端的 IP 地址链,允许后端识别原始客户端 IP。X-Forwarded-Proto
:指示原始请求的协议(HTTP 或 HTTPS)
example.com {
reverse_proxy localhost:3000 {
header_up X-Real-IP {remote}
header_up X-Forwarded-For {remote}
header_up X-Forwarded-Proto {scheme}
}
}
此处评论已关闭