Nginx服务器需要通过http_ssl_module模块来加载SSL证书,因此安装SSL证书前,需要保证当前Nginx已包含此模块。
常见报错
报错1:the "ssl" parameter requires ngx_http_ssl_module
原因:当前Nginx服务器未编译http_ssl_module
模块。
报错2:nginx: [emerg] unknown directive “ssl” in /usr/local/nginx/conf/nginx.conf
原因:修改配置文件后,执行nginx -s reload
报上述错误,表明当前版本的Nginx未编译http_ssl_module
模块。
报错3:./configure: error: SSL modules require the OpenSSL library
原因:缺少OpenSSL依赖库。
解决方法
确认服务器中已安装了openssl,若当前Nginx未编译http_ssl_module
,还需重新编译Nginx使其包含http_ssl_module
。
示例方案
说明
本文以CentOS 8.0 64位系统,Nginx 1.14.1版本,OpenSSL 1.1.1k版本为例。仅供参考,请根据Nginx的版本,选择安装兼容的OpenSSL版本。
检查当前版本Nginx是否包含
http_ssl_module
模块。执行以下命令,查看当前Nginx的编译参数。
nginx -V | grep http_ssl_module
如下图所示,如果输出中包含
--with-http_ssl_module
字样,即说明已经包含http_ssl_module
模块,否则表示当前Nginx安装版本中不包含该模块,您需要手动添加。
安装
http_ssl_module
。# CentOS为例,openssl 1.1.1k版本,请根据Nginx选择兼容的openssl版本。 sudo yum install openssl-devel-1.1.1k
配置
http_ssl_module
并编译。# 前往Nginx安装目录(示例目录,请替换为实际的Nginx安装目录) cd /usr/local/nginx/ # 配置http_ssl_module,其他参数可自定义 ./configure --with-http_ssl_module # 编译 sudo make
重要注意不能make install,否则会覆盖原有Nginx的配置。
再次检查
http_ssl_module
模块是否成功安装。如果未成功安装,请重复步骤2-3。nginx -V | grep http_ssl_module
重启Nginx服务。
# 进入Nginx服务的可执行目录(示例目录,请以实际路径为准)。 cd /usr/local/nginx/sbin # 重新载入配置文件。 ./nginx -s reload
该文章对您有帮助吗?