一、问题现象
服务器nginx配置SSL证书后启动报错:
nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf:53
二、问题分析
原因:nginx缺少http_ssl_module模块,编译安装的时候带上–with-http_ssl_module配置就行了,但是现在的情况是我的nginx已经安装过了,怎么添加模块?以我的nginx为例子
①nginx的安装目录是/usr/local/nginx这个目录,
②我的源码包在/usr/local/nginx-1.20.2目录,根据你自己实际情况对应自己的目录
三、解决过程
1、如果是使用yum 安装等方式,找不到源码包,需要下载当前安装相同版本的源码包:
wget http://nginx.org/download/nginx-1.8.0.tar.gz
使用nginx -V
查询当前Nginx的编译配置信息,configure arguments: 后面为当前运行Nginx的配置信息
(base) [root@iZxpl4sxxnloovZ nginx-1.8.0]# nginx -V nginx version: nginx/1.8.0 built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC) configure arguments: --prefix=/usr/local/nginx
2、 切换到源码目录执行如下代码:
cd /usr/local/nginx-1.20.2 ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
执行结果如下(内容比较多):
3、编译 : make
(这里不要进行make install,否则就是覆盖安装)
[root@llc nginx-1.19.10]# make
4、 进入到nginx目录,备份原来nginx配置文件
[root@i-h7ei19cd conf]# pwd
/usr/local/nginx/conf
[root@i-h7ei19cd conf]# cp nginx.conf nginx.conf.bak
cp: overwrite ‘nginx.conf.bak’? y
5、保证nginx是关闭状态,如果无法关闭,用kill命令强制杀死进程
6、复制刚编译生成的配置覆盖原有的配置
进入到源码包目录,然后找到nginx,copy到nginx对应安装目录,命令如下:
7、切换到nginx安装目录
cd /usr/local/nginx/sbin
8、启动nginx
[root@i-h7ei19cd sbin]# pwd /usr/local/nginx/sbin [root@i-h7ei19cd sbin]# ./nginx
9、打开页面,nginx正常启动
10、配置ssl模块,对nginx.conf文件进行编辑,编辑完,保存。如下:
11、验证配置文件是否正确,并启动nginx
[root@i-h7ei19cd sbin]# ls nginx nginx.old [root@i-h7ei19cd sbin]# ./nginx -t nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful [root@i-h7ei19cd sbin]# ./nginx -s reload
12、打开浏览器,输入地址,验证ssl是否配置成功: