location块在server块中使用,它的作用是根据客户端请求URL去定位不同的应用。

匹配格式 作用
location = /uri = 表示精确匹配,只有完全匹配上才能生效
location ^~ /uri ^~ 匹配以某个URL前缀开头的请求,不支持正则表达式
location ~ pattern ~区分大小写的正则匹配
location ~* pattern ~*不区分大小写的正则匹配
location /uri 前缀匹配,不带任何修饰符,但是在正则匹配之后
location / 通用匹配,任何未匹配到其它location的请求都会匹配到,相当于switch中的default
location @ 命名空间,不提供常规的请求匹配

1、“=”优先级最高
2、如果“=”匹配不到,会和“^~”进行匹配;
3、继而是“~”,如果有多个“~”,则按照在文件里的先后顺序进行匹配;
4、如果还匹配不到,则与“/uri”进行匹配;
5、通用匹配“/”的优先级最低,如果找不到其他配置,就会进行通用匹配;
6、“@”表示命名空间的位置,通常在重定向时,进行匹配,且不会改变URL的原始请求。

前缀匹配时,Nginx 不对 url 做编码,因此请求为 /static/20%/xx,可以被规则 ^~ /static/ /XX 匹配到(注意是空格)
当有匹配成功时候,停止匹配,按当前匹配规则处理请求。

root
location中root指定的只是相对路径,需要和路径结合起来映射地址,比如

location ^~/static/ {
#这里的root需要和路径结合使用,即是映射的文件位置为 /usr/lxw/static
root /usr/lxw/;
index index.html
}

此时我们访问 IP/static/a.css ,那么就会找到 /usr/lxw/static/a.css

alias
alias指定的是绝对路径,不会和location中的路径结合使用,而是直接使用地址映射到文件,比如

location ^~/static/ {
#不会路径结合映射地址,那么这里就会直接映射到/usr/lxw/文件夹下的文件
alias /usr/lxw/;
index index.html
}

如果定义的路径是文件夹,那么需要使用/结尾

proxy_pass
在nginx中配置proxy_pass代理转发时,如果在proxy_pass后面的url加/,表示绝对根路径;如果没有/,表示相对路径,把匹配的路径部分也给代理走。
假设下面四种情况分别用 http://192.168.1.1/proxy/test.html 进行访问。

第一种
location /proxy/ {
proxy_pass http://127.0.0.1/;
}
代理到URL:http://127.0.0.1/test.html 第二种(相对于第一种,最后少一个 / )
location /proxy/ {
proxy_pass http://127.0.0.1;
}
代理到URL:http://127.0.0.1/proxy/test.html 第三种
location /proxy/ {
proxy_pass http://127.0.0.1/lxw/;
}
代理到URL:http://127.0.0.1/lxw/test.html 第四种(相对于第三种,最后少一个 / )
location /proxy/ {
proxy_pass http://127.0.0.1/lxw;
}
代理到URL:http://127.0.0.1/lxwtest.html

nginx location块的更多相关文章

  1. Nginx location 匹配顺序整理

    Nginx location模块整理 具体的Nginx安装就不在这里描述了,这里只是为了对location的描述 Nginx环境 a. 查看当前系统cat /etc/redhat-release [r ...

  2. nginx location详解(三)

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

  3. nginx location匹配顺序及CI框架的nginx配置

    Nginx location匹配顺序如下: 用前缀字符串定义的location规则对URI进行匹配测试. =号定义了精确的前缀字符串匹配,如果发现精确匹配则使用当前规则.否则继续下一步匹配. 匹配其它 ...

  4. nginx Location 语法基础知识

    URL地址匹配是Nginx配置中最灵活的部分 Location 支持正则表达式匹配,也支持条件匹配,用户可以通过location指令实现Nginx对动丶静态网页的过滤处理. Nginx locatio ...

  5. nginx location详解

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

  6. nginx location正则写法

    nginx location正则写法 一个示例: location = / { # 精确匹配 / ,主机名后面不能带任何字符串 [ configuration A ] } location / { # ...

  7. nginx location正则写法(转载)

    nginx location正则写法 一个示例: location = / { # 精确匹配 / ,主机名后面不能带任何字符串 [ configuration A ] } location / { # ...

  8. Nginx Location模块

    相关知识点:URI:统一资源标识符,是一个用于标识某一互联网资源名称的字符串,该种标识允许用户对任何的资源通过特定的协议进行交互操作.URL:统一资源定位符,由三部分组成(1)http://协议 (2 ...

  9. Nginx location 配置用法及正则例子

    Nginx location 配置语法     1. location [ = | ~ | ~* | ^~ ] uri { ... }     2. location @name { ... }   ...

  10. Nginx Location匹配顺序

    理论部分 文字释义匹配规则如下: 略述: 1.nginx服务器首先在server块的多个location块中搜索是否有标准的uri和请求字符串匹配.如果有多个标准uri可以匹配,就匹配其中匹配度最高的 ...

随机推荐

  1. 从 KeyStore 中获取 PublicKey 和 PrivateKey

    KeyStore(译:密钥存储库) 代表用于加密密钥和证书的存储设施. KeyStore 管理不同类型的 entry(译:条目).每种类型的 entry 都实现了 KeyStore.Entry 接口. ...

  2. Seata的分布式事务实现原理

    Seata分布式事务方案 简介 Seata是阿里开源的分布式事务解决方案中间件,对业务侵入小,在应用中Seata整体事务逻辑基于两阶段提交的模型,核心概念包含三个角色: TM:事务发起者.用来告诉TC ...

  3. 【Android】使用 Broadcast 实现进程间通讯

    1 Broastcast 简介 ​ Broadcast(广播)是 Android 中一种广泛运用的在应用程序之间传输信息的机制.使用 Broadcast 能够很方便得实现进程间通讯,一端通过 send ...

  4. haproxy ssl证书配置

    通常情况下,web应用程序的ssl证书放置于nginx的服务器,但很多时候前面会加一次负载均衡,使用HAProxy可以实现https的证书安全,从客户浏览器到HAProxy代理服务器之间为ssl加密传 ...

  5. SpringBoot+Shiro+LayUI权限管理系统项目-8.实现日志管理

    1.说明 基于注解和AOP实现的日志管理.只讲解关键部分,详细看源码,文章下方捐赠或QQ联系捐赠获取. 2.功能展示 包括日志搜索.查看详情和批量删除. 3.业务模型 @Data @TableName ...

  6. Flink本地模式安装和使用

    Flink官方主页:https://flink.apache.org/ . 安装部署 不同版本的Flink对JDK版本要求不尽相同,需要根据具体的Flink版本要求先安装好JDK环境. 通常,在Fli ...

  7. java日期中YYYY与yyyy的区别

    date==>string string ==>date 总结: 个人觉得:当天所在的周属于的年份,一周从周日开始,周六结束,只要本周跨年,那么这周就算入下一年.这个结论在正向转换的时候是 ...

  8. 05、etcd 读请求执行流程

    本篇内容主要来源于自己学习的视频,如有侵权,请联系删除,谢谢. 1.etcd读请求概览 etcd是典型的读多写少存储,在我们实际业务场景中,读一般占据2/3以上的请求.一个读 请求从client通过R ...

  9. web模块化

    CommonJS-----是一种后端js规范,是nodejs遵循的一种编写js模块的规范引入模块-------require('模块路径')定义模块 ------ exports.模块名= funct ...

  10. Kubernetes CKA考试之Killer Simulator(上)

    写在前面 个人微信公众号:密码应用技术实战 个人博客园首页:https://www.cnblogs.com/informatics/ 注:学习交流使用 CKA Simulator Kubernetes ...