问题背景:
在我们使用nginx时,配置到一些没有开启的模块时,比如没有开启SSL模块配置Https,Http2相关配置时,可能会报如下错误:
the "ssl" parameter requires ngx_http_ssl_module
the ‘http2’ parameter requires ngx_http_v2_module in xxx.conf
出现这些问题的原因就是nginx并没有开启对应的模块,而我们的nginx已经安装好了,我们需要做的是添加模块。
解决步骤:
查看nginx当前所开启的模块
nginx -V
--with-http_ssl_module
和--with-http_v2_module
就是我已经开启的模块
配置nginx模块
找到nginx的最新source包(如果没有可以直接去nginx官网下载),进入到源码目录,配置新模块
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_v2_module
后面的参数就是我们需要配置的模块,我们需要把自己nginx之前所使用的模块也带上,不然开启好新模块后可能会丢失之前所使用到的模块
编译
此处切记不要使用make install
,不然之前就会覆盖之前nginx的安装
make
备份nginx
将现有的nginx进行备份操作(这里nginx的位置按照自己nginx的位置进行操作)
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
覆盖原有nginx
将编译好的nginx复制到之前nginx的位置
cp ./objs/nginx /usr/local/nginx/sbin/
重启nginx
nginx -s stop
nginx