`
betakoli
  • 浏览: 166784 次
社区版块
存档分类
最新评论

关于nginx location路径匹配问题(看这一篇就够了)

 
阅读更多
文档从我的有道云笔记复制过来的,排版有点乱掉,请参考原文
基本用法
location / {
root html;
try_files $uri $uri/ /index.html;
}
匹配所有“/”开头的路径到html目录下。try_files的含义是:首先会匹配$uri文件,如果没有去匹配$url/文件,如果再没有去找/index.html
 
扩展用法
location /static/ {
root dev;
try_files $uri $uri/ /index.html;
}
重点剖析一下:
1.首先会去找根路径 dev/static/
2.如果1没找到,会执行try_files ,如果$uri 没找到,则会使用html目录下的默认路径/html
 
从上面的例子可以看出,如果使用了try_files /index.html,在路径和目录配置错误的时候,总会跳转到html下面的index.html。导致最后完全找不到问题原因。try_files一定要慎用
 
扩展变形
location ^~ /static/ {
root /dev;
index index.html index.htm;
}
上面使用了绝对路径,系统会去查找系统目录/dev/static/ 如果找不到目录,会去找该目录下的index.html(index.htm),如果找不到会报错。由于我们使用了index,而非try_files。
 
匹配文件后缀
location ~ .*\.(gif|jpg|jpeg|png)${ root html; }
上面匹配所有最终结尾的文件路径。
 
匹配多种开头
location ~ ^/(api|login|register)/ {
}
注意符号的使用顺序,和匹配单个有所区别。
 
多种匹配结果,并且前缀相同,以最长路径的为准
location ^~ /app/ {
root /dev;
index index.html index.htm;
}
 
location ^~ /app/task/ {
root /dev1;
index index.html index.htm;
}
如果访问:ip/app/ ,会跳转到第一种,在目录/dev/app目录下查找。如果访问 ip/app/task 则会在目录/dev1/app/task/下查找。
颠倒上面的顺序:
发现查找的还是:/dev1/app/task/
 
如果不明白的,可以测试把
location / {
root html;
try_files $uri $uri/ /index.html;
}
放在所有路径的前面,或者最后,发现如果其他location的路径匹配了,基本轮不到它了。

<audio controls="controls" style="display: none;"></audio>

<audio controls="controls" style="display: none;"></audio>

分享到:
评论

相关推荐

    Nginx Location 正则_NginxLocation正则.md_

    : 重复0次或1次+ : 重复1次或更多次* : 重复0次或更多次\d :匹配数字^ : 匹配字符串的开始$ : 匹配字符串的介绍{n} : 重复n次{n} : 重复n次或更多次[c] : 匹配单个字符c[a-z] : 匹配a-z小写字母的任意一个

    nginx location匹配实例详解

    您可能感兴趣的文章:Nginx配置指令location匹配符优先级和安全问题详解Nginx location 匹配规则Nginx服务器的location指令匹配规则详解利用nginx如何匹配多个条件Nginx location匹配规则的方法示例简介Nginx中的...

    Nginx关于location的匹配规则详解.docx

    NULL 博文链接:https://eyesmore.iteye.com/blog/1141660

    Nginx配置多个访问路径

    Nginx配置多个service 多个访问路径 找到conf/nginx.conf修改配置文件 #user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid ...

    详解Nginx location 匹配规则

    ^~ 开头对URL路径进行前缀匹配,并且在正则之前。 location ~ pattern 开头表示区分大小写的正则匹配 location ~* pattern 开头表示不区分大小写的正则匹配 location /uri 不带任何修饰符,也表示前缀匹配,...

    Nginx配置之location的匹配优先级浅析

    主要给大家介绍了关于Nginx配置之location的匹配优先级的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者使用Nginx具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

    百万并发下的Nginx优化,看这一篇就够了!

    本文作者主要分享在Nginx性能方面的实践经验,希望能给大家带来一些系统化思考,帮助大家更有效地去做Nginx。   优化方法论 我重点分享如下两个问题: 保持并发连接数,怎么样做到内存有效使用。 在高并发的...

    一文弄懂Nginx的location匹配的实现

    由于团队在进行前后端分离,前端接管了 Nginx 和 node 层,在日常的工作中,跟 Nginx 打...语法规则很简单,一个location关键字,后面跟着可选的修饰符,后面是要匹配的字符,花括号中是要执行的操作。 修饰符 = 表

    nginx_location

    nginx location 描述 仅供参考····

    nginx的server和location匹配规则

    nginx的server和location匹配规则

    Nginx location匹配规则的方法示例

    主要介绍了Nginx location匹配规则的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    简介Nginx中的location匹配规则

    location匹配命令 ~ #波浪线表示执行一个正则匹配,区分大小写 ~* #表示执行一个正则匹配,不区分大小写 ^~ #^~表示普通字符匹配,如果该选项匹配,只匹配该选项,不匹配别的选项,一般用来匹配目录 = #进行普通...

    Nginx学习,看这一篇就够了.md文件

    文件为MD(MarkDown)文件,推荐两个开源的MD工具:https://github.com/ivarptr/yu-writer.site,https://github.com/tamlok/vnote

    Nginx本地目录映射实现代码实例

    这个时候就需要简单的做一下目录映射来解决,比如想通过浏览器http://huoche.7234.cn/images/jb51/4n5r2x2bwa2.jpg访问到系统目录/image_data/2016/04/29/10/abc.jpg需要在nginx.conf中对应的server {}下添加...

    Nginx服务器的location指令匹配规则详解

    Nginx 中的 Location 指令 是NginxHttpCoreModule中重要指令。Location 指令,是用来为匹配的 URI 进行配置,URI 即语法中的”/uri/”,可以是字符串或正则表达式。但如果要使用正则表达式,则必须指定前缀。 nginx ...

    详解Nginx之Location配置(Location匹配顺序)

    主要介绍了详解Nginx之Location配置(Location匹配顺序),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

Global site tag (gtag.js) - Google Analytics