You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CentOS7升级Nginx至1.22.0后模块升级失败如何解决

问题背景

将Nginx从1.16版本升级至1.22.0版本后,升级关联Nginx模块的全部操作执行失败,当前运行环境为CentOS 7。
待升级的Nginx模块列表如下:

nginx-mod-http-image-filter.x86_64    1:1.16.1-1.el7                  @epel
nginx-mod-http-perl.x86_64            1:1.16.1-1.el7                  @epel
nginx-mod-http-xslt-filter.x86_64     1:1.16.1-1.el7                  @epel
nginx-mod-stream.x86_64               1:1.16.1-1.el7                  @epel
nginx-mod-mail.x86_64                 1:1.16.1-1.el7                  @epel

查询nginx-mod-stream源信息返回如下:

# yum info nginx-mod-stream

Installed Packages
Name        : nginx-mod-stream
Arch        : x86_64
Epoch       : 1
Version     : 1.16.1
Release     : 1.el7
Size        : 171 k
Repo        : installed
From repo   : epel
Summary     : Nginx stream modules
URL         : http://nginx.org/
License     : BSD
Description : Nginx stream modules.

Available Packages
Name        : nginx-mod-stream
Arch        : x86_64
Epoch       : 1
Version     : 1.20.1
Release     : 9.el7
Size        : 89 k
Repo        : epel/x86_64
Summary     : Nginx stream modules
URL         : https://nginx.org
License     : BSD
Description : Nginx stream modules.

执行模块升级命令yum update nginx-mod-stream时报错,核心错误信息如下:

Package nginx-mod-stream.x86_64 1:1.20.1-9.el7 will be an update
--> Processing Dependency: nginx(abi) = 1.20.1 for package: 1:nginx-mod-stream-1.20.1-9.el7.x86_64
--> Finished Dependency Resolution
Error: Package: 1:nginx-mod-stream-1.20.1-9.el7.x86_64 (epel)
           Requires: nginx(abi) = 1.20.1
           Available: 1:nginx-1.20.1-9.el7.x86_64 (epel)
               nginx(abi) = 1.20.1
           Installed: 1:nginx-1.22.0-1.el7.ngx.x86_64 (@nginx-stable)
               Not found
           Available: 1:nginx-1.8.0-1.el7.ngx.x86_64 (nginx-stable)
               Not found
           Available: 1:nginx-1.8.1-1.el7.ngx.x86_64 (nginx-stable)
               Not found
           Available: 1:nginx-1.9.0-1.el7.ngx.x86_64 (nginx-mainline)
...
...

报错提示EPEL源提供的最高版本模块为1.20.1,依赖nginx(abi) = 1.20.1,和当前已安装的nginx-stable源1.22.0版本Nginx的ABI版本不匹配,导致依赖解析失败。

故障原因

出现这个问题的核心是Nginx主程序和模块的软件源不一致:当前安装的1.22.0版本Nginx来自官方nginx-stable源,而旧模块来自EPEL源,两个源打包的Nginx ABI(应用二进制接口)版本不互通,EPEL源的模块最高只适配到EPEL提供的1.20.1版本Nginx,无法匹配官方源的1.22.0版本Nginx,最终导致依赖校验失败。

解决步骤

方案一:替换为官方源对应模块(推荐,和现有Nginx版本完全匹配)

  1. 先卸载当前从EPEL安装的旧版本模块,卸载时不要连带删除Nginx主程序:
    yum remove -y nginx-mod-http-image-filter nginx-mod-http-perl nginx-mod-http-xslt-filter nginx-mod-stream nginx-mod-mail --noautoremove
    
  2. 安装官方源提供的对应1.22.0版本模块,官方源的动态模块包统一以nginx-module-为前缀(和EPEL的nginx-mod-前缀不同):
    yum install -y nginx-module-image-filter nginx-module-perl nginx-module-xslt nginx-module-stream nginx-module-mail
    
  3. 安装完成后检查Nginx配置是否正常,重载服务生效:
    nginx -t
    systemctl reload nginx
    

方案二:统一使用EPEL源的Nginx版本

如果不需要使用1.22.0版本的特性,可以将现有Nginx降级到EPEL源提供的1.20.1版本,和EPEL模块版本匹配:

  1. 移除当前nginx-stable源的Nginx包,保留配置文件:
    rpm -e --nodeps nginx
    
  2. 安装EPEL源的Nginx和对应模块:
    yum install -y nginx nginx-mod-http-image-filter nginx-mod-http-perl nginx-mod-http-xslt-filter nginx-mod-stream nginx-mod-mail
    
  3. 验证配置后重启服务:
    nginx -t
    systemctl restart nginx
    
注意事项
  • 不要混合使用不同源的Nginx主程序和模块,二进制接口不兼容会直接导致Nginx无法启动
  • 操作前建议先备份/etc/nginx目录下的所有配置文件,避免配置丢失
  • 安装完模块后记得在nginx.conf顶部加载对应模块的配置文件(官方源模块默认会在/etc/nginx/modules下生成.conf加载配置,若没有需要手动添加load_module指令)

内容的提问来源于stack exchange,提问作者Hassan Yousefzadeh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.02 23:03:32