一、简要说明
当编译完成后的Nginx需要添加新的模块时,我们需要添加该模块重新编译。
比如我这里的需求是:编译好Nginx后,我需要添加--with-http_v2_module --with-stream模块
所有步骤完成之后,/usr/local/nginx/sbin/nginx -s reload 有可能不生效
最好重启下,Nginx /usr/local/nginx/sbin/nginx -s restart
二、添加步骤
1、查看现有Nginx的安装版本和已编译的参数
# 进入Nginx的安装目录 $ cd /usr/local/nginx/sbin # 查看现有Nginx的版本和已编译的参数 $ ./nginx -V
2、在官方下载相对应的版本
https://nginx.org/en/download.html
3、带上新模块重新编译
# 进入刚下载解压出来的Nginx安装目录 $ cd /data/soft/nginx-1.20.1 # 带上新模块重新编译 $ ./configure --prefix=/usr/local/nginx/ --sbin-path=/usr/local/nginx/sbin/ --with-http_ssl_module --with-http_v2_module --with-stream --conf-path=/usr/local/nginx/conf/nginx.conf --pid-path=/usr/local/nginx/nginx.pid --error-log-path=/usr/local/nginx/logs/error.log --http-log-path=/usr/local/nginx/logs/access.log --http-fastcgi-temp-path=/usr/local/nginx/fastcgi_temp --http-client-body-temp-path=/usr/local/nginx/client_body_temp --http-proxy-temp-path=/usr/local/nginx/proxy_temp --http-uwsgi-temp-path=/usr/local/nginx/uwsgi_temp --http-scgi-temp-path=/usr/local/nginx/scgi_temp # 编译 注意:这里只有make,一定不要手贱顺手执行了make install,不然会覆盖安装的 $ make
三、平滑重启
上一步执行完成后,会在当前目录下生成objs目录,其中的nginx文件即为新的二进制文件
# 进入Nginx的原安装目录 $ cd /usr/local/nginx/sbin # 备份原Nginx运行脚本文件 $ cp -rf nginx nginx_bak
2、替换nginx二进制文件
$ cp -f /data/soft/nginx-1.20.1/objs/nginx /usr/local/nginx/sbin/nginx
3、正确性检查
$ /usr/local/nginx/sbin/nginx -t
4、重新Reload Nginx
$ /usr/local/nginx/sbin/nginx -s reload
5、查看最终编译的新模块
$ /usr/local/nginx/sbin/nginx -V
需要添加--with-http_v2_module --with-stream模块已成功加上
6、重新加载Nginx
$ /usr/local/nginx/sbin/nginx -s reload
特别注意:重新编译了Nginx,只是/usr/local/nginx/sbin/nginx -s reload 新增加模块不会生效,但Nginx新增的配不会生效。这个折腾了很久,一直以为配置问题。如果不生效,确保不想要业务的情况下,可以把一台Nginx节点下线,使用 /usr/local/nginx/sbin/nginx stop停止后,再重新启动Nginx。
版权声明:文章图片资源来源于网络,如有侵权,请留言删除!!!
评论