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


    nginx的location的优先级和匹配方式

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

    在一个server中,会有多个location,如何来确定匹配哪个location

    niginx的正则表达式

    ^   字符串的起始位置

    $   字符串的结束位置

    *   匹配所有

    +   匹配前面的字符最少一次

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

    .   任意单个字符

    {n}   连续重复出现n次

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

    [c]   匹配单个字符c

    ()   分组

    |   或

    location匹配的分类:

    location  /

    location  ~*

    1、精确匹配location  =  /test{...}

    完整的路径,一个字不能少,一个字不能错

    2、正则匹配location  ~/{}

    location  ^~   前缀匹配,以什么为开头

    location  ~    区分大小写进行匹配

    location  ~*   不区分大小写进行匹配

    !~    区分大小写取反匹配

    !~*   不区分大小写取反匹配

    3、一般匹配location  /test{}

    location匹配一旦匹配成功,就不再向下匹配

    location匹配的优先级

    大致:【精确匹配 > 正则匹配 > 一般匹配】

    具体:【location = 完整路径  >  location ^~  >  location ~,~*  >  location /test  >  location /

    精确匹配,优先级最高

    其次是正则匹配

    一般匹配优先级最低

    工作中配置location的原则:

    1、网站首页

    (一般都是静态页面):都是精确匹配(匹配网站的根工作目录)

    location =/{

    }

    2、处理静态文件的请求

    目录匹配和后缀匹配

    location ^~ /static {

    }

    location ~* \.{html|jpg|jpeg|gif|png} $ {

    }

    3、一般规则

    动态请求,把动态请求转发到后端

    location /{

     proxy_pass http://tomcat_server;

    }

  • 相关阅读:
    MySQL子查询
    Matlab:Matlab编程语言的简介、安装、学习路线(几十项代码编程案例分析)之详细攻略
    C语言基础知识
    Apache shiro 漏洞总结
    systemverilog学习 --- 代码重用
    LabVIEW涡扇发动机加力泵测试
    Gin + Element + 云IDE 挑战一小时打造春联生成平台
    数据库RDBMS1
    基于arduino uno + L298 的直流电机驱动proteus仿真设计
    JavaEE-多线程之进程的调度
  • 原文地址:https://blog.csdn.net/a91888888/article/details/133834984