• nginx的location的优先级和匹配方式和nginx的重定向


    http模块有server,在server模块才有location,location匹配的是uri
    /test     /image
    在一个server当中有多个location,如何来确定匹配哪个location。
    nginx的正则表达式:
    ^:字符串的起始位置
    $:字符串的结束位置
    *:匹配所有
    +:匹配前面的字符一次或者多次
    ?:匹配前面的字符0次或者1次
    .:任意单个字符.
    {n}:连续重复出现n次。
    {n.m}:连续重复出现n-m次

    [a-z0-9A-Z]
    [c]:匹配单个字符
    ():分组
    |:或

    location匹配的分类:

    location /
    location ~*
    1、精确匹配location=/test{..}  www.ky32.com/test
    完整的路径,一个字都不能少,也不能错。
    2、正则匹配 location~/{}
    location ^~:前缀匹配,以什么为开头
    ~:区分大小写进行匹配
    ~*:不区分大小进行匹配
    !~:区分大小写取反匹配
    !~*:不区分大小写取反匹配。

    location 匹配一旦匹配成功,不再向下继续匹配。
    location匹配的优先级:精确匹配优先级最高,其次是正则匹配,最后一般匹配
    location=完整路径>location ^~>location~,~*>location /test>location/

    工作当中配置location的原则:

    1、网站首页:都是精确匹配,网站首页都是一个静态页面。匹配网站的根工作目录。location =/{
    }
    2、处理静态文件的请求:目录匹配和后缀匹配
    location ^~ /static {
    }
    location ~*\.{html|jpg|jpeg|gif|png}${
    }

    (直接匹配根目录下以html等结尾的location,前面不可以有路径)

    3、一般规则:动态请求,把动态请求转发的后端的动态页面的服务器。
    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 ]:标志位"标记”

    flag:
    1.last:本条规则匹配完成后,继续向下匹配新的location URI规则
    rewrite ky30 k31 last;

    location /{
        root html
        rewrite last
    }
    break:本条规则匹配完之后立即终止,页面内容变化,uri不变
    redirct:临时重定向302 uri的地址会发生变化
    permanent:永久重定向301 uri的地址会发生变化

    rewrite /test/(.*) /ky32/$1 permanent;
    .*:匹配所有
    $1:表示捕获组$1引用正则表达式的第一个捕获组。
    www.ky32.com/test/index.html 1.jpg  www.ky32.com/ky32/index.html 1.jpg
    搜索引擎的权重
    永久重定向会加入搜索引擎的排名
    临时不会加搜索引擎的权重。
    break:跳转,跳转的时候不会改变uri,用的比较多
    last:继续匹配。两个last会循环
    internal redirection cycle while processing处理请求时发生了重写或者内部重定向循环,进入了无限循环。nginx循环最多可以执行10次,超过10次,会报错,500

    总结:rewrite和location都可以跳转,似乎有点相同,但是区别在于 rewrite是在同一域名之内更改获取资源的路径location是对路径访问控制。

    基于域名的跳转:
    www.kgc.com但是公司业务变更,迁移到了新的域名www.benet.com代替,但是旧域名不能被废除,访问kgc可以跳转到benet.且匹配的uri不能变。

    基于ip访问跳转:
    公司业务新版本上线,用户访问网站统一显示固定的维护页面
    只有公司的192.168.233.61可以访问。

    基于目录下.php访问.php跳转到新的页面。

  • 相关阅读:
    AWS S3加密
    Sentry 后端云原生中间件实践 ClickHouse PaaS ,为 Snuba 事件分析引擎提供动力
    设计模式-适配器模式在Java中应用
    java.util.Properties类常用的方法
    HTML点击链接强制触发下载
    链表增删操作问题及解决方法
    map底层实现原理
    Java线程池进阶
    java spring IOC的三种方式之XML形式
    趣学python编程 (五、常用IDE环境推荐)
  • 原文地址:https://blog.csdn.net/abc13245821907/article/details/133803189