location官方文档:http://nginx.org/en/docs/http/ngx_http_core_module.html#location

Syntax:    location [ = | ~ | ~* | ^~ ] uri { ... }
location @name { ... }
Default: —
Context: server, location

这个配置的设置依赖于请求的URL。

对规范化的URL进行匹配,文本解码后使用"%xx"的格式进行编码,解析由.和..组成的相对路径,并且可能压缩两个或2个以上的斜杠到单一的斜杠。

location 可以被定义为一个前缀字符串,或者正则表达式.正则表达式使用~*(不区分大小写) 或 ~(区分大小写)被指定.

去查找location,匹配给到的请求.

nginx首先去检查使用prefix strings(prefix location)定义的locations. </images/ 这种的属于prefix string>

接着长的prefix strings被匹配记忆.

接下来 正则表达式被检测,在配置文件中的顺序去匹配

当搜索到第一个被匹配的正则表达式,将停止搜索,并且相应的配置项被应用

如果没有正则表达式被匹配到,更早的被查找到的prefix location被使用.

location 块是可以嵌套的,除了一下例外的情况:

  不区分大小写的操作系统像 Mac Os x 和cygwin,忽略了与prfix strings的匹配.可是比较限于1字节的语言环境(comparison is limited to one-byte locales)<翻译不是很准确>
  正则表达式可以包含捕获,稍后用于其他指令
  如果最长前缀匹配位置有"^~"修饰符那么不进行正则匹配.
  同样,使用"="修饰符,有可能定义一个URL和位置的精确匹配,如果精确匹配被发现,那么匹配结束.例如:如果"/"请求经常发生,定义了一个"location = /" 将加速这些请求的处理.在第一比较后搜索停止.这样的位置显然不能包含嵌套的位置.
  在版本从0.7.1 到 0.8.41, 如果一个请求匹配到前缀位置 除了"=" 和"^~" 修饰符,搜索也终止和不进行正则匹配

让我们举个栗子:
location = / {
[ configuration A ]
}

location / {
[ configuration B ]
}

location /documents/ {
[ configuration C ]
}

location ^~ /images/ {
[ configuration D ]
}

location ~* \.(gif|jpg|jpeg)$ {
[ configuration E ]
}

"/" 请求会匹配配置文件A,
"/index.html" 匹配配置文件B
"/documents/documents.html" 匹配 C
"/images/" 匹配 D
"/images/1.jpd" 匹配 E

"@"前缀自定义了个location字符串.这样的一个location不用于常规请求的处理,但是用于请求的重定向.他不能被嵌套,也不能包含嵌套location
如果一个location被定义为前缀字符串,结束符是个斜线"/",并且请求由proxy_pass, fastcgi_pass, uwsgi_pass, scgi_pass, or memcached_pass他们中的一个来处理,那么进行特殊的处理.响应请求URI等于这个字符串,但是不包含最后的"/",代码301永久重定向将被返回给请求添加斜线的URL.如果这不是你所希望的,一个URL精确的匹配和location被这样定义:
location /user/ {
proxy_pass http://user.example.com;
}

location = /user {
proxy_pass http://login.example.com;
}

nginx location详解(三)的更多相关文章

  1. 06 nginx Location详解之精准匹配

    一:Location详解之精准匹配 location 语法 location 有”定位”的意思, 根据Uri来进行不同的定位. 在虚拟主机的配置中,是必不可少的,location可以把网站的不同部分, ...

  2. nginx location详解

    Location block 的基本语法形式是: location [=|~|~*|^~|@] pattern { ... } [=|~|~*|^~|@] 被称作 location modifier ...

  3. nginx入门与实战 安装 启动 配置nginx Nginx状态信息(status)配置 正向代理 反向代理 nginx语法之location详解

    nginx入门与实战 网站服务 想必我们大多数人都是通过访问网站而开始接触互联网的吧.我们平时访问的网站服务 就是 Web 网络服务,一般是指允许用户通过浏览器访问到互联网中各种资源的服务. Web ...

  4. nginx之旅(第一篇):nginx下载安装、nginx启动与关闭、nginx配置文件详解、nginx默认网站

    一.nginx下载安装 版本nginx 1.15.5 系统环境centos7.5(本机ip192.168.199.228) 关闭selinux 和防火墙firewall 1.下载 wget http: ...

  5. Nginx配置详解 http://www.cnblogs.com/knowledgesea/p/5175711.html

    Nginx配置详解 序言 Nginx是lgor Sysoev为俄罗斯访问量第二的rambler.ru站点设计开发的.从2004年发布至今,凭借开源的力量,已经接近成熟与完善. Nginx功能丰富,可作 ...

  6. Nginx Rewrite详解

    Nginx Rewrite详解 引用链接:http://blog.cafeneko.info/2010/10/nginx_rewrite_note/ 原文如下: 在新主机的迁移过程中,最大的困难就是W ...

  7. nginx配置详解(转)

    Nginx 配置文件详解 user nginx ; #用户 worker_processes 8; #工作进程,根据硬件调整,大于等于cpu核数 error_log logs/nginx_error. ...

  8. Nginx系列(10)- Nginx配置文件详解

    nginx文件结构 ... #全局块 events { #events块 ... } http #http块 { ... #http全局块 server #server块 { ... #server全 ...

  9. .NET DLL 保护措施详解(三)最终效果

    针对.NET DLL 保护措施详解所述思路完成最终的实现,以下为程序包下载地址 下载 注意: 运行环境为.net4.0,需要安装VS2015 C++可发行组件包vc_redist.x86.exe.然后 ...

随机推荐

  1. 上海招聘FPGA讲师(专兼职均可)

    上海招聘FPGA讲师(专兼职均可) 招聘FPGA培训讲师(专兼职均可) 诚聘FPGA培训讲师_软件无线电方向 ◆精通FPGA设计方法及技巧 ◆精通无线电知识及System View设计方法,有基于Sy ...

  2. ClipDrawable 资源

    ClipDrawable 代表从其他位图上截取的一个“图片片段”. 示例: main.xml <?xml version="1.0" encoding="utf-8 ...

  3. Linux的文件/目录访问权限

    一直以为对这个概念非常懂,但这次还是犯了眼高手低的毛病. 配置服务器遇到了一个问题,对某个WEB目录(例如"/bin"),有两个用户要对其进行读写操作: 首先apache服务器要对 ...

  4. 设计模式(一): abstract factory抽象工厂模式 -- 创建型模式

    1.定义 为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类. 2.适用场景 1.一个系统要独立于它的产品创建.组合和表示. 2.一个系统要由多个产品系列中的一个来配置. 3.当你要 ...

  5. JavaScript权威指南学习笔记5

    下午在杭图回去前看了书中第二部分的13-17章,看的很粗,感觉大部分东西自己已经知道或者平时开发中不会用到,很多章节只是简单的翻了一下,没有仔细思考里面说到的道理,下面对各章节简单的记录下. 第13章 ...

  6. 用python爬虫抓站的一些技巧总结

    1. [代码]最基本的抓站     ? 1 2 import urllib2 content = urllib2.urlopen('http://XXXX').read() 2. [代码]使用代理服务 ...

  7. 2014-08-22 关于Response、Request等对象在cs文件中的使用

    今天是在吾索实习的第33天.已经有一段时间没写过博客了,今天突然想起个值得分享的东西,所以又华丽地回归了. 废话不多说了,直奔主题.我们会发现,在我们在cs文件中,直接使用Response.Reque ...

  8. bzoj 1056 [HAOI2008]排名系统(1862 [Zjoi2006]GameZ游戏排名系统)

    1056: [HAOI2008]排名系统 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1854  Solved: 502[Submit][Statu ...

  9. 尚学堂 JAVA DAY11 概念总结

    1.冒泡排序算法 <升序排列> 思路1: 数组长度为n,那么要对数组进行n-1次遍历; step 1---从数组的第一个数开始,两两比较,如果第一个数 > 第二个数,将二者进行交换: ...

  10. Class Prefix(Xcode6以后设置类前缀)

    点开Xcode右侧Utilities,Project Document->Class Prefix  图片:prefix.png