Nginx 启用 SSL 模块功能(http_ssl_module)

/ 中间件 / 260浏览

准备

在配置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已经成功启用。