Caddy:更现代、更易用的Web服务器和反向代理
编辑Caddy
一直以来,站点的Web服务器都使用的是nginx,结合nginx-proxy-manager管理使用,但是NPM莫名奇妙接口502,懒得去找问题了,直接转投Caddy,使用起来感觉比NPM更加简单。再见了nginx-proxy-manager。
介绍
Caddy 是一款现代化的、功能强大的 Web 服务器和反向代理,主要特点是 自动化 HTTPS(支持 Let's Encrypt 自动申请和续期 SSL/TLS 证书)。Caddy 是一个易于配置且功能丰富的 Web 服务器,它能够处理多种 Web 服务,包括静态文件托管、反向代理、负载均衡、API 网关等。
Caddy 与 Nginx Proxy Manager 的对比
Caddy 和 Nginx Proxy Manager(NPM)都是常见的反向代理和 Web 服务器工具,它们可以帮助用户将多个 Web 应用通过域名和 SSL 配置起来。以下是它们的一些对比:
特性 | Caddy | Nginx Proxy Manager |
---|---|---|
安装复杂度 | 极其简单,支持自动 HTTPS 和零配置 SSL 证书 | 安装复杂度较高,需要配置 Nginx、SSL 证书和反向代理规则 |
自动 SSL 证书 | 自动与 Let's Encrypt 集成,支持自动申请和续期 | 支持自动申请和续期证书,但配置更复杂 |
配置文件 | 简单的 Caddyfile 配置文件,易于理解和编辑 | 基于 Nginx 配置文件,配置较为复杂 |
代理支持 | 反向代理,负载均衡,路由和 URL 重写等 | 支持反向代理,且拥有图形化界面管理 |
性能 | 优秀,尤其是在多域名和 HTTPS 处理上 | 性能也不错,广泛用于高流量生产环境 |
扩展性 | 基于 Go 语言的插件扩展,功能非常强大 | 基于 Nginx 的模块化架构,功能灵活 |
使用场景 | 适合个人网站、开发者和小型公司,自动化程度高 | 适合需要图形化界面的用户,企业级 Web 应用 |
安装
docker-compose 安装
docker-compose.yml 文件
version: '3'
services:
caddy:
image: caddy:latest
container_name: caddy
restart: unless-stopped
ports:
- "80:80" # HTTP
- "443:443" # HTTPS
- "443:443/udp"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile # 挂载 Caddyfile
- ./site:/srv # 将静态网站目录挂载到容器中的 /srv 目录
- caddy_data:/data # 用于存储 Caddy 生成的 SSL 证书
- caddy_config:/config # 用于存储 Caddy 配置
volumes:
caddy_data:
caddy_config:
配置
docker 中挂载了Caddyfile,所有配置都是基于此文件,与docker-compose.yml同级创建一个Caddyfile
- 配置静态站点
docker中已挂载 site
目录,所以将静态网站按照目录放置与site下并添加配置,其中www就是静态网站目录,此配置将访问www下的index.html。
yourdomain.com {
root * /srv/www
file_server
}
- 配置方向代理
由于caddy使用docker部署,如果其他项目也使用docker部署,可能不在同一个网络,所以ip地址建议填写宿主机内网ip。
yourdomain.com {
reverse_proxy localhost:8080
file_server # 启用静态文件服务(如果你有静态资源
}
- 多个域名
直接添加不同的块
yourdomain.com {
reverse_proxy localhost:8080
file_server # 启用静态文件服务(如果你有静态资源
}
yourdomain1.com {
reverse_proxy localhost:8081
file_server # 启用静态文件服务(如果你有静态资源
}
- 负载均衡
yourdomain.com {
reverse_proxy /api/* localhost:8081 localhost:8082
}
- 路径重写
yourdomain.com {
rewrite /oldpath /newpath
reverse_proxy localhost:8080
}
- 5
- 0
-
分享