必须在源码编译时显式添加--with-http_ssl_module参数,且需安装openssl开发包、正确执行configure命令,并通过nginx -v验证模块内建,缺一不可。

要让 Nginx 支持 HTTPS,必须在源码编译阶段显式启用 --with-http_ssl_module,它不是默认开启的模块。光加这个参数还不够,整个流程需满足三个前提:OpenSSL 开发库已就位、configure 命令正确调用、编译后验证生效。
确保系统已安装 OpenSSL 开发包
该模块依赖 OpenSSL 的头文件和静态/动态链接库。若缺失,./configure 会直接报错,例如:
"SSL module requires the OpenSSL library" 或 "OpenSSL library is not used"。
-
CentOS / RHEL:运行
yum install openssl-devel -
Ubuntu / Debian:运行
apt-get install libssl-dev - 如需使用自定义 OpenSSL(例如新版 OpenSSL 3.x),可加
--with-openssl=/path/to/openssl-source,但需先完成其make && make install;不建议覆盖系统 OpenSSL。
在 configure 中正确启用模块
进入 Nginx 源码目录后,执行 ./configure 时必须包含该参数。推荐搭配常用安全与性能模块一起启用:
-
--with-http_ssl_module(必需) -
--with-http_v2_module(HTTP/2 需 SSL,建议启用) -
--with-openssl-opt=enable-tls1_3(OpenSSL ≥1.1.1 时可用) - 其他按需添加,如
--with-http_realip_module、--with-http_gzip_static_module
示例命令:
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module编译安装并验证是否成功
执行 make && sudo make install 后,检查模块是否真正内建:
- 运行
/usr/local/nginx/sbin/nginx -V 2>&1 | grep -o with-http_ssl_module,输出应为 with-http_ssl_module - 配置文件中写
listen 443 ssl;并指定证书路径后,启动不报 "unknown directive 'ssl'" 错误,说明模块已就绪且配置语法有效 - 若仅需给已有安装补加模块,可跳过
make install,只执行make,然后替换sbin/nginx二进制文件(注意备份原文件)
不复杂但容易忽略——缺开发包、漏参数、没验证,三者任一出问题都会导致 HTTPS 配置失败。











