Caddy是一个现代的、开源的、基于Go语言的Web服务器,它具有自动HTTPS开箱即用的特性,配置简洁,易于使用。Caddy能够作为静态文件的HTTP服务器,也可以作为反向代理,负载均衡器,甚至可以用来配置WebSockets和TLS。
Caddy的特点:
- 自动HTTPS:Caddy能够自动获取和续期Let’s Encrypt的证书,实现全站HTTPS。
- 配置简单:Caddy使用Caddyfile进行配置,这是一种简单直观的配置格式。
- 模块化:Caddy的设计是模块化的,这意味着可以通过插件来扩展其功能。
- 高性能:基于Go语言,Caddy在性能上有着良好的表现。
- 跨平台:Caddy可以在多种操作系统上运行,包括Linux、macOS、Windows以及各种容器化环境。
Caddy的使用:
安装Caddy:
在大多数系统上,你可以直接从Caddy的官方网站下载预编译的二进制文件。以下是使用命令行在Linux系统中安装Caddy的示例:
sh
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
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:
安装完成后,你可以通过以下命令启动Caddy服务:
sh
sudo caddy start
基本配置:
Caddy的配置文件通常命名为Caddyfile
,放置在/etc/caddy/
目录下。以下是一个基本的Caddyfile示例:
example.com {
root * /var/www/example.com
file_server
}
这个配置将会启动一个服务器,监听example.com域,并提供位于/var/www/example.com
的静态文件。
反向代理配置:
Caddy作为反向代理服务器时,可以转发请求到其他服务器。以下是一个配置反向代理的示例:
example.com {
reverse_proxy localhost:8080
}
这个配置将所有到达example.com的HTTP请求转发到运行在localhost:8080的服务器上。
如果需要更复杂的代理配置,例如路径匹配或多个后端服务器,可以这样做:
example.com {
# 转发/api路径到不同的后端服务
reverse_proxy /api localhost:8081 {
header_up X-Forwarded-Path {path}
}
# 转发除/api路径外的所有请求到另一个服务
reverse_proxy localhost:8080
}
在这个配置中,所有到/api
路径的请求都会被转发到运行在localhost:8081的服务器,而其他所有请求则会被转发到localhost:8080。
确保在修改配置后,通过运行sudo caddy reload
命令来重新加载配置,使更改生效。
Caddy的配置非常灵活,你可以根据需要设置更多的选项,如负载均衡、缓存、请求重写等。详细的配置选项和示例,请参考Caddy的官方文档。