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

Nginx安装模块时遇‘ENGINE_by_id’弃用错误(OpenSSL 3.0相关)

Nginx编译遇OpenSSL 3.0弃用错误的解决方法

问题概述

编译Nginx 1.21.0时触发‘ENGINE_by_id’ is deprecated: Since OpenSSL 3.0错误,导致安装失败。

环境信息

  • 运行环境:VirtualBox中的Ubuntu 22.04虚拟机
  • 连接方式:主机Ubuntu 22.04通过SSH连接虚拟机
  • OpenSSL版本:3.0.2 15 Mar 2022(库版本与工具版本一致)

复现流程

  • 下载Nginx 1.21.0主线版本源码并解压
  • 进入源码目录:cd nginx-1.21.0/
  • 安装依赖:sudo apt-get install libpcre3 libpcre3-dev libpcrecpp0v5:i386 libssl-dev
  • 执行配置命令:./configure --sbin-path=/usr/bin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --with-debug --with-pcre --with-http_ssl_module
  • 执行安装:sudo make install

错误原因

Nginx 1.21.0源码中使用了OpenSSL 3.0已弃用的ENGINE_by_id函数,Ubuntu 22.04默认的OpenSSL 3.0会对这类弃用函数抛出编译错误,中断安装流程。

解决方法

方案1:升级Nginx版本

Nginx 1.21.4及后续版本已修复OpenSSL 3.0兼容性问题,直接下载编译1.21.4或更高版本的Nginx,重新执行安装流程即可解决。

方案2:添加编译参数忽略弃用警告

若坚持使用Nginx 1.21.0,可在./configure命令中追加参数,让编译器忽略OpenSSL的弃用警告:

./configure --sbin-path=/usr/bin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --with-debug --with-pcre --with-http_ssl_module --with-cc-opt="-Wno-deprecated-declarations"

执行完配置后,重新运行sudo make && sudo make install完成安装。

方案3:降级OpenSSL到1.1.x版本(不推荐)

Ubuntu 22.04系统组件大量依赖OpenSSL 3.0,降级可能引发其他依赖问题。若要尝试,需手动编译安装OpenSSL 1.1.1系列版本,并在Nginx配置时指定路径:

./configure ... --with-openssl=/path/to/openssl-1.1.1x

安装验证

安装完成后,执行nginx -v确认版本,执行nginx -t检查配置文件有效性,验证安装成功。

内容的提问来源于stack exchange,提问作者Omar Tulashvili

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 14:28:31