准备
在配置Nginx的ssl模块时,启动或停止Nginx服务会报错:
nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf:38
这是因为在编译安装nginx时,没有安装http_ssl_module模块导致。以后在新安装nginx编译时加上 --with-http_ssl_module
参数就可以了。但是我们已经安装过nginx了,怎么加http_ssl_module模块呢?
首先确认nginx安装目录以及源码所在目录;例如我的是 /usr/local/nginx
这个目录;然后找到源码目录,在~/wget/nginx-1.12.0
目录。
安装SSL模块
好了,那么开始安装SSL模块。首先切换至源码包:
cd ~/wget/nginx-1.12.0
查看nginx原有模块(注意V后面不要有空格)
/usr/local/nginx/sbin/nginx -V
然后会显示配置参数:configure arguments:
。那么我们在原有配置参数基础上增加--with-http_ssl_module
参数执行,如下:
./configure --prefix=/usr/local/nginx --with-http_ssl_module
运行上面命令,这时如果没有安装open-ssl模块,会报错,找不到OpenSSL:
...
checking for OpenSSL library ... not found
checking for OpenSSL library in /usr/local/ ... not found
checking for OpenSSL library in /usr/pkg/ ... not found
checking for OpenSSL library in /opt/local/ ... not found
...
解决办法是,安装OpenSSL即可。 ubuntu下安装:
apt-get install openssl
apt-get install libssl-dev
centos下安装:
yum -y install openssl openssl-devel
安装后,再次运行:
./configure --prefix=/usr/local/nginx --with-http_ssl_module
等待配置完成,完成后,运行命令:
make
这里注意,不要运行make install
,否则会覆盖安装nginx!
最后将安装好的nginx覆盖替换掉当前的nginx(需要nginx服务停止状态)
cp ./objs/nginx /usr/local/nginx/sbin/
替换后,启动nginx,通过命令再次查看安装的模块:
/usr/local/nginx/sbin/nginx -V
显示结果:
nginx version: nginx/1.12.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC)
built with OpenSSL 1.0.2k-fips 26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --with-http_ssl_module
到这里,可以看到http_ssl_module已经成功启用。
作者: Zealon
崇尚简单,一切简单自然的事物都是美好的。