必须用--with-openssl=/path/to/openssl-src指向openssl源码根目录,nginx编译时直接调用其configure脚本和头文件构建内嵌openssl,下载解压后确保含configure、include/等目录,禁用系统openssl-devel,configure成功提示“using openssl from /path”,objs/nginx -v和ldd验证链接方式。

必须用 --with-openssl=/path/to/openssl-src 指向 OpenSSL 源码根目录,不能指向安装路径或系统库。Nginx 编译时会直接调用该目录下的 Configure 脚本和头文件,构建内嵌的 OpenSSL,这是唯一被官方支持的方式。
确认 OpenSSL 源码已就位
从 openssl.org/source 下载对应版本(如 openssl-3.0.13.tar.gz),解压到目标位置(例如 /opt/src/openssl-3.0.13),确保目录下包含:
• Configure 文件
• include/ 子目录(含 openssl/ssl.h 等)
• crypto/、ssl/ 等源码子目录
不要执行 make install,也不要用包管理器安装的 openssl-devel 或 libssl-dev —— 这些对 Nginx configure 无效。
在 Nginx configure 中正确引用
进入 Nginx 源码目录后,运行 configure 命令时加入:
- --with-openssl=/opt/src/openssl-3.0.13(路径必须是解压后的顶层目录)
- 可选:添加 --with-openssl-opt="enable-tls1_3 no-asm" 向 OpenSSL 的 Configure 传递参数
- --with-http_ssl_module 需显式启用(即使旧版已启用,也建议保留)
注意:不要写 --with-openssl=/usr/local/openssl 这类安装路径,那会导致 configure 失败或静默回退到系统旧版。
验证是否生效
configure 执行成功后,末尾应出现类似提示:
checking for OpenSSL library ... found + using OpenSSL from /opt/src/openssl-3.0.13
编译完成后,用以下命令确认:
- objs/nginx -V 2>&1 | grep -i openssl → 应显示 built with OpenSSL 3.0.13
- ldd objs/nginx | grep ssl → 若无输出,说明静态链接成功;若有输出,说明走的是动态链接(需另配 --with-openssl=/dev/null + -L/-rpath)











