Lazy loaded image
技术分享
Nginx 迁移到 Caddy:一次完整的反向代理配置迁移实践
字数 701阅读时长 2 分钟
2026-1-2
2026-1-4
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 具有以下优势:
  1. **自动 HTTPS**
  • 自动申请和续期 SSL 证书
  • 内置 ACME 客户端
  • 默认启用 HTTP/2
  1. **配置简单**
  • 人性化的配置语法
  • 更少的配置代码
  • 自动化的 HTTP 到 HTTPS 重定向
  1. **现代化特性**
  • HTTP/3 (QUIC) 支持
  • 零停机配置重载
  • 内置反向代理功能
  1. **安全性**
  • 默认安全配置
  • 自动 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 }
上一篇
OpenAI 重磅发布 ChatGPT Study 学习模式:你的 24/7 AI 私人教师
下一篇
Nature推荐:五大AI模型如何攻克不同科研场景?(内含Deepseek)

评论
Loading...