只适用于自行编译安装的nginx配置
业务变更带来的Nginx增加模块需求
由于业务从php转为go开发,需要用到Http2的协议。这种协议在Nginx上需要http_v2_module
这个模块的支持,但是现有服务器上,查看Nginx的编译参数中,并未添加。所以需要再次编译替换nginx
[root@ip-172-60-0-193 ~]# nginx -V
Tengine version: Tengine/2.3.2
nginx version: nginx/1.17.3
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC)
built with OpenSSL 1.0.2k-fips 26 Jan 2017
TLS SNI support enabled
configure arguments: --user=www --group=www --prefix=/data/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module --add-module=modules/ngx_http_reqstat_module --add-module=modules/ngx_http_user_agent_module --add-module=modules/ngx_http_upstream_check_module --add-module=modules/ngx_http_upstream_dynamic_module --add-module=modules/ngx_http_upstream_session_sticky_module --add-module=modules/ngx_http_upstream_consistent_hash_module --with-pcre=/root/web/pcre-8.37
从以上命令的输出中,可以看到。当前的Nginx并未添加http_v2_module
模块的支持
为nginx添加新的模块
找到当时编译安装的Nginx源码,或者相同版本的源码包。解压后,进行重新编译
-
编译时,使用之前的编译参数,并添加上对于新模块的支持
cd tengine-2.3.2
# 使用新的编译参数
./configure --user=www --group=www --prefix=/data/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_realip_module --add-module=modules/ngx_http_reqstat_module --add-module=modules/ngx_http_user_agent_module --add-module=modules/ngx_http_upstream_check_module --add-module=modules/ngx_http_upstream_dynamic_module --add-module=modules/ngx_http_upstream_session_sticky_module --add-module=modules/ngx_http_upstream_consistent_hash_module --with-pcre=/root/web/pcre-8.37 -
进行make。一定要注意,不能进行
make install
# 上边编译没有报错的话,进行make
make -
关闭现有的Nginx,并进行nginx二进制文件的替换
# make成功后,新的nginx二进制,在编译目录的objs目录下
# 查看编译后的Nginx,都支持哪些模块
objs/nginx -m Tengine version: Tengine/2.3.2
nginx version: nginx/1.17.3
nginx: loaded modules:
nginx: ngx_core_module (static)
...
nginx: ngx_http_v2_module (static)
... # 可以看到我们新编译后的nginx,已经添加好了我们需要的模块
systemctl stop nginx cd nginx/sbin
cp nginx nginx_old
mv ${make_dir}/objs/nginx nginx/sbin systemctl start nginx -
查看替换后的Nginx,对于新模块的支持
# 再次查看当前系统上Nginx的模块
nginx -m nginx -V
到这里,整个Nginx重新编译安装增加新模块操作已完成。其他模块也可以按照此操作执行