关键在于编译时启用--with-http_ssl_module并确保OpenSSL开发包已安装;需先装openssl-devel或libssl-dev,再进入源码目录执行configure追加该选项、make,最后替换sbin/nginx二进制文件并用nginx-V验证。

要让源码安装的 Nginx 支持 HTTPS,关键不是“安装一个独立模块”,而是编译时启用 --with-http_ssl_module,并确保底层依赖就绪。这个过程分三步:确认环境、重新编译、验证生效。
检查 OpenSSL 开发包是否已安装
SSL 模块不能单独运行,它需要 OpenSSL 的头文件和库文件。缺少会导致 configure 报错(如 SSL module requires the OpenSSL library)。
- CentOS / RHEL:yum install openssl-devel
- Ubuntu / Debian:apt-get install libssl-dev
- 若需自编译 OpenSSL(不推荐覆盖系统版本),用 --with-openssl=/path/to/openssl-src 指向已成功 make & make install 的源码目录
进入源码目录重新 configure 并编译
无需重装整个 Nginx,只要回到原始解压的 nginx-*.tar.gz 目录即可。保留原有配置参数,只追加 SSL 相关选项:
- 执行 ./configure 时必须显式加入:--with-http_ssl_module
- 建议一并启用常用安全增强项:--with-http_v2_module(HTTP/2 需 SSL)、--with-openssl-opt=enable-tls1_3(OpenSSL ≥1.1.1 才支持 TLS 1.3)
- 示例命令:./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_v2_module
- 接着运行 make(注意:不用 make install,避免覆盖已有配置和二进制文件)
替换 nginx 二进制文件并验证
编译完成后,新生成的 nginx 可执行文件在 objs/nginx 路径下:
- 备份原 nginx:cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
- 覆盖二进制:cp objs/nginx /usr/local/nginx/sbin/
- 验证是否内置模块:/usr/local/nginx/sbin/nginx -V 2>&1 | grep -o with-http_ssl_module —— 输出该字符串即成功
- 再检查配置中使用 listen 443 ssl; 不报 unknown directive "ssl" 错误,说明模块真正可用


















