nginx平滑升级编译headers-more模块
不想暴露某些服务器信息的时候,需要自定义response头信息,可以去修改nginx的源码,或者编译的时候,加上headers-more这个模块.
原来编译时没有编译进headers-more这个模块现在试试平滑升级重新编译进来。
先下载nginx-0.7.66.tar.gz
下载agentzh-headers-more-nginx-module-v0.14-1-g7bba2a1.tar.gz 模块
解压两个压缩包
tar xzvf nginx-0.7.66.tar.gz
tar xzvf agentzh-headers-more-nginx-module-v0.14-1-g7bba2a1.tar.gz
进入nginx-0.7.66目录编译
./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --add-module=/usr/local/src/agentzh-headers-more-nginx-module-7bba2a1
注意--prefix=/usr/local/nginx 要求是升级前的目录,--add-module=/usr/local/src/agentzh-headers-more-nginx-module-7bba2a1指向模块的解压目录。
等待命令完成过后进行编译
make
编译完成后objs下会生成nginx文件,这时需要备份原来的/usr/local/nginx/sbin下的nginx文件
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old
然后把刚才编译的objs下的nginx复制到/usr/local/nginx/sbin/ cp /usr/local/src/nginx-0.7.66/objs/nginx /usr/local/nginx/sbin/
检查配置文件/usr/local/nginx/sbin/nginx -t
输出如下表示为正常。
the configuration file /usr/local/webserver/nginx/conf/nginx.conf syntax is ok
the configuration file /usr/local/webserver/nginx/conf/nginx.conf was tested successfully
执行kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`可以使旧的pid文件重命名为nginx.pid.oldbin,并依次启动新的nginx进程。此时新的进程和旧的进程会同时运行。要逐步停止旧版本的nginx进程,必须发送-WINCH信号给旧的进程,然后旧的工作进程将开始从容关闭。
kill -WINCH `cat /usr/local/nginx/logs/nginx.pid.oldbin`,过一段时间旧的进程处理完已经连接的请求后退出,就开始用新的进程接收请求了。
这时候,可以决定使用旧的版本还是新的版本了。 kill -HUP 旧的主进程号 不重载配置启动旧的工作进程 kill -QUIT 新的主进程号 从容关闭工作进程,新的工作进程退出后,旧的主进程会移除.oldbin,恢复它的.pid文件。 kill -TERM 新的主进程号 强制退出 如果升级成功,希望保留新的服务器时,可以发送QUIT信号给旧的主进程号,使其退出只留下新的服务器运行。
至此,升级完成。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。