Nginx添加新模块&平滑重
当编译完成后的Nginx需要添加新的模块时,我们需要添加该模块重新编译。比如我这里的需求是:编译好Nginx后,我需要添加--with-http_v2_module --with-stream模块
·
一、简要说明
当编译完成后的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、在官方下载相对应的版本
nginx: downloadhttps://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文件即为新的二进制文件
1、备份原来的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。
参考资料
更多推荐
已为社区贡献3条内容
所有评论(0)