2023-11-16-【架构】debain12 将nginx1.22.1升级为caddy

在 Debian 12 上将 Nginx 1.22.1 迁移到 Caddy 是一个非常明智的选择,尤其是考虑到你目前有“科学上网”和“个人站点”的需求。Caddy 能够原生支持 HTTP/3,且自动管理 SSL 证书。

以下是完整的迁移操作流程:


第一步:停止并禁用 Nginx

在安装 Caddy 之前,必须先释放 80443 端口,否则 Caddy 无法启动。

1
2
3
4
5
6
7
8
9
# 停止 Nginx
sudo systemctl stop nginx

# 禁用 Nginx 开机自启
sudo systemctl disable nginx

# 检查端口是否已释放(确保没有输出)
netstat -tunlp | grep -E "80|443"


第二步:在 Debian 12 上安装 Caddy

使用官方存储库安装,可以确保以后通过 apt upgrade 自动更新。

1
2
3
4
5
6
7
8
9
10
11
12
13
# 安装必要的依赖
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https

# 添加 Caddy 官方 GPG 密钥
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
sudo apt install caddy


第三步:配置迁移 (Nginx 语法转 Caddyfile)

这是最核心的部分。我们将你之前的 Nginx 配置逻辑转换为 Caddyfile。

Nginx 典型配置:

1
2
3
4
5
6
7
8
9
10
server {
listen 443 ssl;
server_name v2.blowsysun.top;
root /usr/share/nginx/html;
location /ebnADSERKT {
proxy_pass http://127.0.0.1:44470;
proxy_set_header Upgrade $http_upgrade;
}
}

对应的 Caddyfile 配置 (/etc/caddy/Caddyfile):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
v2.blowsysun.top {
# 开启压缩
encode gzip

# 静态文件根目录(沿用 Nginx 默认路径)
root * /usr/share/nginx/html
file_server

# 科学上网反向代理 (对应 /ebnADSERKT)
handle /ebnADSERKT* {
reverse_proxy localhost:44470
}

# 错误日志
log {
output file /var/log/caddy/access.log
}
}


第四步:检查并启动 Caddy

  1. 验证配置格式
1
2
caddy validate --config /etc/caddy/Caddyfile

  1. 启动并设置开机自启
1
2
sudo systemctl enable --now caddy


第五步:针对 Debian 12 + 加拿大节点的专项优化

由于你使用的是 Debian 12 且连接的是加拿大节点,必须开启以下两项以获得最高网速:

1. 开启 BBR (Debian 12 原生支持)

1
2
3
4
echo "net.core.default_qdisc=fq" | sudo tee -a /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

2. 放行 UDP 443 (HTTP/3 加速)

Caddy 默认开启 HTTP/3,它在处理长距离高延迟连接时比 Nginx 的 TCP 强得多。

1
2
3
# 如果你使用 ufw
sudo ufw allow 443/udp


常见问题排查:

  • 权限问题:如果 Caddy 启动后访问网页显示 403 Forbidden,是因为 Caddy 的运行用户是 caddy。你需要确保静态目录可读:
    sudo chown -R caddy:caddy /usr/share/nginx/html
  • SSL 失败:如果 443 端口没开或者域名解析没生效,Caddy 无法自动申请证书。请确保你的域名 v2.blowsysun.top 已指向当前的 Debian 服务器 IP。

备注

  • caddy 配置路径/etc/caddy/Caddyfile
  • 重启 caddy 指令 systemctl restart caddy

2023-11-16-【架构】debain12 将nginx1.22.1升级为caddy
https://zhangyingxuan.github.io/2023-11-16-【架构】debain12 将nginx1.22.1升级为caddy/
作者
blowsysun
更新于
2026年1月23日
许可协议