目录
nginx平滑升级具体流程
获取老版本的编译信息,从网上获取所需要的安装包或者功能包,配置新版本或功能时加上老版本编译信息和新版本的功能 --add-module=/usr/src/echo-nginx-module ,重新进行编译注意不要进行安装,将老版本的程序文件复制,停掉老版本的进程,将新版本的程序复制到老版本的所在位置,启动新版本
当前版本没有添加echo模块功能所以使用不能echo
[root@nginx nginx-1.20.2]# vim /usr/local/nginx/conf/nginx.conf
location / {
echo "liuyang";
root html;
index index.html index.htm;
}
[root@nginx sbin]# nginx-bak -t
nginx: [emerg] unknown directive "echo" in /usr/local/nginx/conf/nginx.conf:44
nginx: configuration file /usr/local/nginx/conf/nginx.conf test failed
//我现在的最新版本是1.22.0
[root@nginx src]# wget https://nginx.org/download/nginx-1.22.0.tar.gz
解压安装包 //最新版本与老版本的包要在同级目录下
[root@nginx src]# tar xf nginx-1.22.0.tar.gz
[root@nginx src]# ls
debug nginx-1.20.2 nginx-1.22.0
kernels nginx-1.20.2.tar.gz nginx-1.22.0.tar.gz
安装git命令,用来下载github仓库的包
[root@nginx src]# dnf -y install git
使用git clone将所需要添加的功能包下载下来,也需要在之前的同级目录中
[root@nginx src]# git clone https://github.com/openresty/echo-nginx-module.git
[root@nginx src]# ls
debug kernels nginx-1.20.2.tar.gz nginx-1.22.0.tar.gz
echo-nginx-module nginx-1.20.2 nginx-1.22.0
//查看之前的编译参数有哪些,然后将自己所需要添加的功能进行编译
[root@nginx src]# nginx -V
nginx version: nginx/1.20.2
built by gcc 8.5.0 20210514 (Red Hat 8.5.0-4) (GCC)
built with OpenSSL 1.1.1k FIPS 25 Mar 2021
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --user=nginx --group=nginx --with-debug --with-http_ssl_module --with-http_realip_module --with-http_image_filter_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_stub_status_module --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log
然后重新编译
[root@nginx nginx-1.22.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-debug --with-http_ssl_module --with-http_realip_module --with-http_image_filter_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_stub_status_module --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log
--add-module=/usr/src/echo-nginx-module (添加的功能模块)
//注意make后不要进行安装
[root@nginx nginx-1.22.0]# make
编译完成后新版本已经完成了在 objs/nginx
[root@nginx nginx-1.22.0]# objs/nginx -v
nginx version: nginx/1.22.0
将老版本的nginx程序文件进行备份防止新版本出现问题无法恢复,将老版本的nginx杀掉
[root@nginx nginx-1.22.0]# mv /usr/local/nginx/sbin/nginx{,-bak}
[root@nginx nginx-1.22.0]# cp objs/nginx /usr/local/nginx/sbin/
[root@nginx nginx-1.22.0]# pkill nginx
此时启动已经是新版本了
[root@nginx nginx-1.22.0]# systemctl start nginx
[root@nginx nginx-1.22.0]# nginx -v
nginx version: nginx/1.22.0
没添加echo功能之前是不能使用的
[root@nginx sbin]# nginx-bak -t
nginx: [emerg] unknown directive "echo" in /usr/local/nginx/conf/nginx.conf:44
nginx: configuration file /usr/local/nginx/conf/nginx.conf test failed
此时echo的功能就可以使用了
[root@nginx sbin]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
以上步骤时分解步骤,在生成环境中nginx服务不能停掉,我们使用一条命令进行替换版本
[root@nginx nginx-1.22.0]# \cp /usr/local/nginx/sbin/nginx{,-bak};pkill nginx;\cp objs/nginx /usr/local/nginx/sbin/nginx;systemctl start nginx
location实战
( location = 路径 ) --> ( location ^~ 路径 ) --> ( location ~ 正则 ) --> ( location ~* 正则 ) --> ( location 路径 )
常用修饰符说明:
修饰符 | 功能 |
---|---|
= | 精确匹配 |
~ | 正则表达式模式匹配,区分大小写 |
~* | 正则表达式模式匹配,不区分大小写 |
^~ | 前缀匹配,类似于无修饰符的行为,也是以指定模块开始,不同的是,如果模式匹配,那么就停止搜索其他模式了,不支持正则表达式 |
@ | 定义命名location区段,这些区段客户端不能访问, |
测试
location = /liu { //精准匹配,只匹配根后面一样的
echo "[ configuration A ]";
}
location / { //其他都没匹配到时就匹配
echo "[ configuration B ]";
}
location /liu/ { //以liu开头的但是优先级没有 = 高
echo "[ configuration C ]";
}
location ^~ /yang/ { // 以yang开头的比没有正则表达式优先级高
echo "[ configuration D ]";
}
location ~* \.(gif|jpg|jpeg)$ { //以括号中的内容结尾的
echo "[ configuration E ]";
}
// =的优先级最高所以匹配到了A
// 当其他匹配项都匹配不到时会匹配到此项
//因为=后面的东西必须是一模一样的,所以他会匹配到c
//以yang开头的就会匹配到此项
以括号中的内容结尾的则匹配到此项
标签:--,平滑,module,nginx,location,1.22,root From: https://www.cnblogs.com/TQingS/p/16786636.html