【译】nginx关于location部分
译:
Syntax: |
location [ = | ~ | ~* | ^~ ] uri { ... }``location @name { ... }
|
---|---|
Default: | — |
Context: |
server , location
|
依据请求的URI进行配置。
在对以"%xx"形式的文本解码,对相对路径".“和”…"的格式化和两个或多个相邻斜杠压缩为单个斜杠后的规范URI执行匹配。
一个location可以被定义为一个前缀字符串或者一个正则表达式。正则表达式通过前缀"*"(忽略大小写)或者""(大小写敏感)修饰,在这些位置中,最长前缀字符串匹配的location会被选中和记住。然后会按照正则表达式在配置文件中出现的顺序进行正则表达式的匹配。在第一个正则表达式匹配上就会终止,并且相应的配置会被使用。如果没有匹配上正则表达式,前面记住的前缀字符串匹配的location的配置将会被使用。
location 块是可以嵌套的,以下提到一些例外。
对于不区分大小写的操作系统例如macOS和Cygwin,与前缀字符串匹配忽略大小写。然而,比较被局限于一字节的环境。
正则表达式可以包含捕获,捕获的内容可以被用在之后的其他指令中。
如果匹配的最长的前缀字符串的location有“^~"修饰,之后的正则表达式检查就不会进行了。
使用"=“修饰是定义一个严格匹配的URI和location。如果匹配上一个严格模式,搜索就会终止。例如,如果一个”/"请求经常发生,定义"location = /"将会快速处理这些请求。在第一个严格的location匹配上后就会终止搜索。这样的location显然不能包含嵌套location。
注:在0.7.1到0.8.41版本中,如果一个请求匹配了前缀字符串的location即使没有"=“或者”^~"修饰,搜索也会停止并且正则表达式也不会检查。
让我们通过一个例子进行说明:
location = / {[ configuration A ]
}location / {[ configuration B ]
}location /documents/ {[ configuration C ]
}location ^~ /images/ {[ configuration D ]
}location ~* \.(gif|jpg|jpeg)$ {[ configuration E ]
}
“/“请求将会匹配 configuration A,”/index.html"请求将会匹配configuration B,”/documents/document.html"请求将会匹配configuration C,"/images/1.gif"请求将会匹配configuration D,"/documents/1.jpg"请求将会匹配configuration E。
"@"前缀作为前缀定义的location。这样的location不是用来处理常规请求的,而是用于请求重定向。它们也不能嵌套,也不能包含嵌套位置。
如果一个location通过前缀以斜杠结尾字符定义的,并且请求被 proxy_pass,fastcgi_pass,uwsgi_pass,scgi_pass,memcached_pass或grpc_pass之一处理,然后会执行特殊处理。在响应一个请求的URI等这个字符串但是没有斜杠,一个永久重定向的cod 301将会返回请求的URI并且带上斜杠。如果不想这样,一个严格匹配的URI和location可以像这样定义:
location /user/ {proxy_pass http://user.example.com;
}location = /user {proxy_pass http://login.example.com;
}
注意点
- 通过字符串定义的location是从URI的path的前面开始匹配的,这就是为什么总强调前缀字符串的原因,不是URI的path中有一部分匹配上就行,必须要从path的头开始匹配,但是正则就没有这个限制。
- 关于^~匹配上就不向后就不向后进行正则的匹配了。这里要注意的是要求 ^~ 匹配上,就是在进行字符串搜索的时候 ^~ 是要被记住的那个location,也就是匹配上的最长前缀的location。
参考
nginx文档locaiton部分
【译】nginx关于location部分相关推荐
- nginx之location匹配规则
Nginx之location 匹配规则详解 有些童鞋的误区 1. location 的匹配顺序是"先匹配正则,再匹配普通". 矫正: location 的匹配顺序其实是" ...
- Nginx之location 匹配规则详解
Nginx 的语法形式是: location [=|~|~*|^~|@] /uri/ { - } ,意思是可以以" = "或" ~* "或" ~ &q ...
- [译]NGINX 和 ZooKeeper,动态负载平衡和部署(上)
[译]NGINX 和 ZooKeeper,动态负载平衡和部署(上) Aidan Carson · 2016-07-22 11:38 原文:NGINX and ZooKeeper, Dynamic Lo ...
- nginx location匹配优先级_一分钟搞清楚:Nginx之Location优先级
Location表达式类型 ~ 表示执行一个正则匹配,区分大小写 ~* 表示执行一个正则匹配,不区分大小写 ^~ 表示普通字符匹配.使用前缀匹配.如果匹配成功,则不再匹配其他location = 进行 ...
- Nginx的location配置详解
Nginx的location配置详解 匹配顺序 location 的匹配顺序其实是先匹配普通,再匹配正则 正则匹配会覆盖普通匹配(实际的规则,比这复杂) 执行顺序 普通 location的匹配规则是& ...
- Nginx 的 Location 配置指令块
最近一段时间在学习 Nginx ,以前一直对 Nginx 的 Location 配置很头大,最近终于弄出点眉目.总结如下: nginx 配置文件,自下到上分为三种层次分明的结构: | http ...
- Nginx配置location及rewrite规则
Nginx配置location及rewrite规则 示例: location = / { # 精确匹配 / ,主机名后面不能带任何字符串 [ configuration A ] } location ...
- Nginx之location详解
root location中root指定的只是相对路径,需要和路径结合起来映射地址,比如 location ^~/static/ { ## 这里的root需要和路径结合使用,即是映射的文件位置为 /u ...
- nginx: [emerg] “location“ directive is not allowed here
nginx配置出错. D:\nginx>nginx.exe -t nginx: [emerg] "location" directive is not allowed her ...
最新文章
- 16岁自闭少年被指黑掉英伟达微软,曾赚1400万美元,英国警方逮捕7人
- 路由协议:RIP/OSPF/BGP—Vecloud微云
- DL之ShuffleNet:ShuffleNet算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略
- Hibernate5环境搭建
- c语言图片raw保存,求指导,如何用c语言实现读取*.raw格式图像
- 如何用c语言倒序输出字母,菜鸟求助-如何用指针法将一串字符按单词的倒序输出?如:i love yo...
- 解决虚拟机时间引起的奇怪问题
- Linux系统编程2:基础篇之详解Linux中的权限问题
- OBIEE 11g 启动与停止包含服务器重启
- 自动驾驶_基于强化学习的自动驾驶系统
- matlab遗传算法实例crtrp,遗传算法实例参考.ppt
- 利用ajaxSubmit()实现Form表单submit()提交后的回调函数
- 1.3分布式系统架构技术选型
- 免费的银行联行号查询/接口
- 计算日期间隔,以XX年XX月XX日格式显示
- 开源项目—在线简历编辑工具
- Android高级特性笔记
- 回归学习算法---偏最小二乘回归、PCA降维与理论
- Spark中Map和Json字符串相互转换
- 名帖358 文天祥 草书《谢昌元座右自警辞》