晚风笔记

记一些折腾、服务和网络上的琐事

在 Debian 13 上把 Nginx 升到 1.28 的几个坑

2026-09-12 · 运维

一台 2024 年买的轻量云主机,系统是 Debian 13,nginx 一直用发行版自带的 1.26。最近看到 1.28 出来了,就想顺手升一下,结果折腾了一晚上。

坑一:仓库版本还是 1.26

Debian 13 自带的是 1.26.3,安全更新跟着走,但大版本不会动。想要 1.28 得加 nginx 官方源:

curl -fsSL https://nginx.org/keys/nginx_signing.key \
  | sudo gpg --dearmor -o /usr/share/keyrings/nginx.gpg

echo "deb [signed-by=/usr/share/keyrings/nginx.gpg] \
http://nginx.org/packages/debian trixie nginx" \
  | sudo tee /etc/apt/sources.list.d/nginx.list

加完 apt update 就能看到 1.28 了。但官方源和发行版源会打架,记得用 apt-cache policy nginx 确认优先级。

坑二:配置文件被覆盖

升级的时候 debconf 会问要不要替换 /etc/nginx/nginx.conf,选错了就把自己改过的 include 全冲掉了。稳妥的做法是升级前先备份:

sudo cp -a /etc/nginx /root/nginx-$(date +%F)

另外 --force-confold 这个参数很好用,可以让 dpkg 保留旧配置。

坑三:http2 指令的写法变了

1.25 之后 listen 443 ssl http2; 会报 deprecated 警告,要拆成两行:

listen 443 ssl;
http2 on;

虽然只是警告不影响运行,但每次 reload 都刷一行日志,看着烦。

最后

升完跑了三天,没出问题。现在回头看,其实 1.26 也没什么不好,就是手痒。下次再想升级之前,先把备份做足。

← 返回首页