美文网首页
Nginx 路径匹配规则,通配符

Nginx 路径匹配规则,通配符

作者: 愤怒的老照 | 来源:发表于2020-03-06 10:58 被阅读0次

Location

语法规则

语法规则: location [=|~ |~ *|^~] /uri/ { … }

  • = 开头表示精确匹配

  • ^~ 匹配任何已 /images/ 开头的任何查询并且停止搜索。这个符号我理解成了^非和~正则,就是不用正则。

  • ~ 开头表示区分大小写的正则匹配

  • ~* 开头表示不区分大小写的正则匹配

  • !~和 !~*分别为区分大小写不匹配及不区分大小写不匹配 的正则

  • / 通用匹配,任何请求都会匹配到,一般作为最后的匹配。

匹配步骤

  • 匹配普通location
  • 如果没有使用=,则匹配不是严格匹配,而是前缀匹配,总是选取最长的匹配路径
  • 不管有没有命中,都匹配正则location(如果使用了^~,则不匹配正则location,=也可以)
  • 如果正则location命中,选用正则location
  • 否则,使用普通location

“^~ ” 和 “=” 都能阻止继续搜索正则 location,区别是什么?

共同点是它们都能阻止继续搜索正则 location
不同点是 “^~ ” 依然遵守 “最大前缀” 匹配规则,然而 “=” 不是 “最大前缀”,而是严格匹配

index

在nginx的location块中,可以增加index来配置初始页

server {
    listen      80;
    server_name example.org www.example.org;    
    
    location / {
        root    /data/www;
        index   index.html index.php;
    }
    
    location ~ \.php$ {
        root    /data/www/test;
    }
}

index的原理如下:

如果文件存在,则使用文件作为路径,发起内部重定向。直观上看上去就像再一次从客户端发起请求,Nginx再一次搜索location一样。
既然是内部重定向,域名+端口不发生变化,所以只会在同一个server下搜索。

那么上面的例子中,如果你使用example.orgwww.example.org直接发起请求,那么首先会访问到“/”的location,结合root与index指令,会先判断/data/www/index.html是否存在,如果不,则接着查看
/data/www/index.php ,如果存在,则使用/index.php发起内部重定向,就像从客户端再一次发起请求一样,Nginx会再一次搜索location,毫无疑问匹配到第二个~ .php$,从而访问到/data/www/test/index.php。

root和alias

root和alias都可以表示本地路径,要区别在于nginx如何解释location后面的uri,这会使两者分别以不同的方式将请求映射到服务器文件上。
root的处理结果是:root路径+location路径
alias的处理结果是:使用alias路径替换location路径
alias是一个目录别名的定义,root则是最上层目录的定义。
还有一个重要的区别是alias后面必须要用“/”结束,否则会找不到文件的。。。而root则可有可无~~

有时修改nginx配置文件,nginx -s reload重启后不起作用,经排查是启动了多个nginx,kill后启动就好了。

相关文章

  • Nginx 路径匹配规则,通配符

    Location 语法规则 语法规则: location [=|~ |~ *|^~] /uri/ { … } = ...

  • Spring的路径匹配原则

    Spring的路径匹配遵循Ant-style风格; 匹配规则 Spring的路径有四种通配符匹配方法(在下面的表格...

  • gulp基本操作

    通配符路径匹配示例: 压缩时错误定位 依赖包gulp-util: gulp.src路径规则: src取非: 查看当...

  • Nginx location的正则匹配

    Nginx location的正则匹配 Nginx正则匹配的匹配规则

  • Glob匹配模式

    在Linux中,glob是用来匹配路径名的通配符,主要包含以下四种: 通配符(Wild Matching) *匹配...

  • Nginx中的location规则补充

    这是一篇关于Nginx中Location规则的补充说明。重点在于测试路径规则和^~规则以及正则规则同时匹配的情况,...

  • glob表达式

    glob表达式(glob expressions)通配符: * 匹配文件路径中的0个或多个字符,但**不会匹配路径...

  • 正则通配符规则

    通配符匹配规则: * :任意数量的字符 ?:任何单个字符 正则 匹配规则: * 前面元素出现0次以...

  • 【python】glob模块

    glob模块 glob模块通配符 通配符功能*匹配0或多个字符**匹配路径下 “所有文件的名字”及“所有子目录的文...

  • nginx 配置静态文件

    [nginx try_files的理解] Nginx location的匹配规则 location 匹配优先级 示例

网友评论

      本文标题:Nginx 路径匹配规则,通配符

      本文链接:https://www.haomeiwen.com/subject/plbvrhtx.html