首页 > 系统相关 >nginx平滑升级与location实战

nginx平滑升级与location实战

时间:2022-10-13 00:33:14浏览次数:68  
标签:-- 平滑 module nginx location 1.22 root

目录


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

相关文章

  • nginx平滑升级
    nginx平滑升级目录一.平滑升级二.location案例一.平滑升级1、获取之前的编译参数[root@localhost~]#nginx-Vnginxversion:nginx/1.22.0builtbygcc8.5.02......
  • Linux安装nginx
    1.进入nginx官网下载页面,下载Linux所需的压缩包文件。http://nginx.org/en/download.html   2.在安装nginx之前需要安装pcre,gcc,openssl,zlib。因为nginx依赖这......
  • nginx启动失败:Redirecting to /bin/systemctl restart nginx.service Failed to res
      解决:在/etc/init.d/下创建nginx文件作启动脚本1#!/bin/bash2#3#chkconfig:-85154#description:NginxisaWorldWideWebserver.5#process......
  • nginx 日志文件切割
    shell脚本cat_nginx_log.sh#!/bin/bash#nginx日志文件的存放路径logs_path='/app/openresty/nginx/logs'mv$logs_path/access.log$logs_path/access.$(date+%......
  • nginx 守护进程
    shell脚本catngx_daemon.sh#!/bin/bashnginxpid=$(ps-Cnginx--no-header|wc-l)if["$nginxpid"="0"];then#启动nginx/ap......
  • nginx url地址重写与转发
    1. 去掉地址中的/api部分location/api/ws{      rewrite"^/api(.*)$"$1;   }2. /ws地址将转发http://47.119.131.185location/ws{      pr......
  • nginx配置——根据路由参数来设置对应响应方式
      location/{set$is_matched0;#是否有匹配的参数#正则判断url中携带的参数是否有匹配if($query_string~".*(?:^|\?|&)token=123"){set$is_ma......
  • CENTOS安装NGINX报错
    1特别是在CentOS7上安装Nginx,不确定你有什么样的错误(无法打开你的图像/图片),但刚刚在CentOS7上尝试过(大约10分钟前)(VagrantBox"CentOS-7.2-1.8T"),它通过......
  • nginx负载均衡策略
    目前Nginx服务器的upstream模块支持6种方式的分配:轮询默认方式weight权重方式ip_hash依据ip分配方式least_conn最少连接方式fair(第三方)响应时间方......
  • centos7 安装 Nginx 步骤
    1安装gcc2安装perl库yuminstall-ypcrepcre-devel3安装zlib库yuminstall-yzlibzlib-devel4先解压,然后到文件夹里面./configure--prefix=/usr/local/nginx......