• nginx优先级和匹配方式


    http模块有server server中才有location location匹配的是uri

    Nginx正则表达式:

    ^:字符串的起始位置

    $:字符串的结束位置

    *:匹配所有

    +:匹配前面的字符一次或多次

    ?:匹配前面的字符0次或1次

    .:任意单个字符

    {n}:连续重复出现n次

    {n,m}:连续重复出现n-m次

    [a-z,0-9,A-Z]

    ():分组

    |:或

    Location匹配的分类

    1. 精确匹配 location = /test {……} | 完整的路径 一个字也不能少 也不能错
    2. 正则匹配 location ~ / {……} | {
    3. Location ^~ :前缀匹配 以什么为开头
    4. ~:区分大小写进行匹配
    5. ~*:不区分大小写进行匹配
    6. !~:区分大小写取反匹配
    7. !~*:不区分大小写取反匹配
    8. }
    9. 一般匹配 location/test {}

    Location 一旦匹配成功 不再向下匹配

    Location匹配的优先级:精确匹配的优先级最高>正则匹配>一般匹配

    Location = 完整路径 > location ^~ >location ~,~*>location /test>location /

    配置location的原则:

    网站首页都是精确匹配 网站首页都是一个静态页面 匹配网站的根工作目录

    Location = / { }

    处理静态文件的请求 目录匹配和后缀匹配

    Location ^~ /static { }

    Location ~*\.{html|jpg|jpep|gif|png}${ }

    一般规则:动态请求 把动态请求转发到后端

    Location / { 

    Proxy_pass http://tomcat server;

    }

    Nginx重定向:

    rewrite:结合nginxt提供的全局变量和自定义变量 结合正则表达式以及标志位实现url重写以及重定向

    rewrite执行顺序

    1)、执行server块里面的rewrite

    2)、执行location里面定义的rewrite

    3)、选定location中的rewrite

    Rewrite中可以if语句 只有if没有else

    Rewrite语法: Rewrite [flag]

    :正则表达式

    :跳转的内容或者路径

    [flag]:标志位

    Last:本条规则匹配完成之后 继续向下匹配新的location URI规则

    Break:本条规则匹配完之后立即终止 页面内容变化 URI不变

    Redirect:临时重定向 302 URI的地址会发生变化

    Permanent:永久重定向 301 URI地址会发生变化

    break跳转 跳转的时候不会改变uri 用的比较多

    last 继续匹配 如果进入死循环 nginx最多循环10次 会报错500

    总结:

    Rewrite和location都可以跳转 区别在于rewrite是在同一域名内更改获取资源的路径 location是对路径进行访问控制

    实验1、基于域名的跳转 www.kgc.com 公司业务变更 迁移到新域名www.benet.com 代替 旧域名不能被废除 且参数不变

    实验2、基于IP访问跳转 业务新版本上线 过程中用户看不到 用户访问网站提示页面维护 只有内网 192.168.233.61可以访问

    实验3、基于结尾文件跳转

    总结:

    Location匹配的写法

    Location = / 精确匹配 完全匹配 优先级最高

    Location ^~

    Location ~* 这两个是第二优先级

    Location /test 第三优先级

    Location / 第四优先级

    Location是访问控制 匹配到之后不再向下继续匹配

    网站设置location的规则

    1. 精确匹配主要为了匹配首页
    2. Location ^~ location ~* 进行指定内容匹配
    3. Location / 主要为了做反向代理 把动态请求转发给后端服务器

    Rewrite:

    Permanent 永久重定向

    Redirect 临时重定向

    Break 跳转 不会继续匹配 不改变URI

    Last 继续向下匹配 nginx只能循环十次 超过10次会报500

  • 相关阅读:
    Jupyter安装启动、登录密码问题解决
    Zabbix安装与部署
    宝塔面板部署express以及MySql项目
    一篇文章教会你写一个贪吃蛇小游戏(纯C语言)
    此次519暴跌的几点感触 2021-05-21
    头歌实训答案:招聘数据分析
    打卡第 1 天:正则表达式学习总结
    ipynb转换为pdf、Markdown(.md)
    一文搞定 UDP 和 TCP 高频面试题!
    【华为机试真题 JAVA】猴子吃桃-200
  • 原文地址:https://blog.csdn.net/dever233/article/details/133858227