type
status
date
slug
summary
tags
category
icon
password
文章目录
- 从零开始:Ubuntu 系统 Nginx 迁移到 Caddy 的完整指南
- * 一、背景介绍
- 二、为什么选择 Caddy?
- 三、安装 Caddy
- * 1\. 使用官方包仓库安装
- 2\. 验证安装
- 3\. 配置系统服务
- 四、配置文件位置
- 五、从 Nginx 迁移配置
- * 1\. 原 Nginx 配置分析
- 2\. 转换为 Caddy 配置
- 六、Next.js 应用的特殊处理
- * 1\. 静态文件处理
- 2\. API 路由处理
- 七、常见问题及解决方案
- * 1\. 重定向循环问题
- 2\. 静态文件加载失败
- 3\. WebSocket 连接问题
- 八、性能优化
- * 1\. 启用压缩
- 2\. 缓存配置
- 3\. 安全头设置
- 九、维护和监控
- * 1\. 日志配置
- 2\. 服务管理命令
- 十、最佳实践建议
- 十一、总结
- 十二、参考资料
从零开始:Ubuntu 系统 Nginx 迁移到 Caddy 的完整指南
一、背景介绍
最近在将基于 Next.js 的 Web 应用从 Nginx 迁移到
Caddy。这是一个完整的迁移实践指南,从安装到配置,再到问题排查,希望能帮助到有类似需求的开发者。
二、为什么选择 Caddy?
Caddy 2.0 相比 Nginx 具有以下优势:
- **自动 HTTPS**
- 自动申请和续期 SSL 证书
- 内置 ACME 客户端
- 默认启用 HTTP/2
- **配置简单**
- 人性化的配置语法
- 更少的配置代码
- 自动化的 HTTP 到 HTTPS 重定向
- **现代化特性**
- HTTP/3 (QUIC) 支持
- 零停机配置重载
- 内置反向代理功能
- **安全性**
- 默认安全配置
- 自动 HSTS
- 现代 TLS 配置
三、安装 Caddy
1\. 使用官方包仓库安装
安装依赖
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
添加 Caddy 官方 GPG key
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
添加 Caddy 官方仓库
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
安装 Caddy
sudo apt install caddy
2\. 验证安装
检查 Caddy 版本
caddy version
检查服务状态
sudo systemctl status caddy
3\. 配置系统服务
启动 Caddy 服务
sudo systemctl start caddy
设置开机自启
sudo systemctl enable caddy
查看日志
sudo journalctl -u caddy --no-pager
四、配置文件位置
Caddy 的主要配置文件位置:
主配置文件
/etc/caddy/Caddyfile
站点配置目录(建议创建)
/etc/caddy/conf.d/
日志目录
/var/log/caddy/
SSL 证书目录
/var/lib/caddy/.local/share/caddy/
五、从 Nginx 迁移配置
1\. 原 Nginx 配置分析
server {
listen 80;
listen 443 ssl http2;
server_name example.com;
SSL配置
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
反向代理设置
location / {
proxy_pass http://127.0.0.1:8305;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location /admin/ {
proxy_pass http://127.0.0.1:8306/admin/;
}
}
2\. 转换为 Caddy 配置
example.com {
TLS 配置(如果使用已有证书)
tls /path/to/cert.pem /path/to/key.pem
全局代理头设置
header {
Strict-Transport-Security "max-age=31536000"
}
日志配置
log {
output file /var/log/caddy/access.log
level INFO
format console
}
- 作者:Maynor
- 链接:https://maynor1024.live/article/2dd1f390-6aa9-818b-99d5-ddf612876668
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
