背景

Nginx 官方修复了一个 HTTP/2 协议相关的超危漏洞(CVE-2026-42945,CVSS≥9,远程可接管服务器),攻击者可利用 HTTP/2 请求处理缺陷威胁服务端安全。受影响版本以 Nginx 官方安全公告为准,建议所有对外提供 HTTP/2 服务的节点尽快升级到官方最新稳定版。

影响自查

1
nginx -v

对照官方公告确认当前版本是否在受影响范围内,受影响则按下方步骤升级。

解决方案

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# 1. 备份原有配置
mkdir nginx.bak
cp -r /etc/nginx nginx.bak/

# 2. 停止Nginx服务
systemctl stop nginx

# 3. 卸载系统自带旧版本
dnf remove -y nginx nginx-core

# 4. 写入Nginx官方EL9源
cat > /etc/yum.repos.d/nginx.repo <<'EOF'
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
EOF

# 5. 刷新缓存并安装新版
dnf clean all && dnf makecache
dnf install -y nginx

# 6. 恢复站点自定义配置
cp -r nginx.bak /etc/nginx

# 7. 校验配置并启动
nginx -t
systemctl enable --now nginx

# 验证版本
nginx -v

站点配置参考(HTTP 跳转 + HTTPS)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# HTTP 强制跳转 HTTPS
server {
listen 80;
server_name xuezzz.me www.xuezzz.me;
return 301 https://$server_name$request_uri;
}

# HTTPS 主服务块
# ------ 需注意,1.30.* 版本以上,写法不再是 listen 443 ssl http2; 而是以下写法 ------
server {
listen 443 ssl;
http2 on; # 修复废弃语法警告,分离http2配置
server_name xuezzz.me www.xuezzz.me;

# 防DoS、缓冲区溢出请求限制
client_max_body_size 10M;
client_header_buffer_size 1k;
large_client_header_buffers 2 1k;
client_header_timeout 10s;
client_body_timeout 10s;
keepalive_timeout 60s;
}

http {
server_tokens off;
# 其余原有配置...
}
1
2
3
# 检查语法,重启nginx服务器
nginx -t
systemctl restart nginx

修复验证

1
2
3
4
5
# 确认版本已更新
nginx -v

# 确认服务正常、HTTP/2 生效
curl -sI https://你的域名 | head -5

升级后观察一段时间访问日志与错误日志,确认业务无异常即完成修复。