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. Linux 中hdparm命令参数说明

    hdparm命令提供了一个命令行的接口用于读取和设置IDE或SCSI硬盘参数. 语法 hdparm(选项)(参数) 选项 -a:设定读取文件时,预先存入块区的分区数,若不加上选项,则显示目前的设定: ...

  2. Linux IOS镜像中查看Kernel 版本号

    开ISO镜像,到rpm包的目录里面去找到kernel-********.RPM这个包,中间的星号那一段就是内核版本

  3. Vue+SpringBoot+ElementUI实战学生管理系统-10.学生管理模块

    1.章节介绍 前一篇介绍了教师管理模块,这一篇编写学生管理模块,需要的朋友可以拿去自己定制.:) 2.获取源码 源码是捐赠方式获取,详细请QQ联系我 :)! 3.实现效果 学生列表 修改学生 4.模块 ...

  4. golang 打隧道和端口转发

    `package main import ( "golang.org/x/crypto/ssh" "io" "log" "net& ...

  5. java+mysql数据库实现的学生管理系统

    说明: java+mysql数据库实现的学生管理系统 功能 实现增加学生.删除学生.修改学生.学生列表.查询学生功能 截图: 开发工具/技术 java  eclipse 价格:50元,有需要联系 微信 ...

  6. 自然周算法-javascript实现

    获取自然周 js获取自然周 本文作者:bigroc 本文链接:https://www.cnblogs.com/bigroc/p/14888550.html 代码 function getWeeks() ...

  7. 为产品的一堆Visual Studio解决方案引入Directory.Build.props

    为什么需要Directory.Build.props? 一个产品有了多个甚至几十个解决方案之后,每个解决方案里面的项目可能会引用一个dll包的不同版本,因此需要集中管理dll包的版本号. .NET的D ...

  8. C#与C互操作

    C#给C++传递char**(转载) extern "C" _declspec(dllexport)void GetResult(char* a,char** pBuf) { sp ...

  9. python爬虫 xpath入门与lxml库基本使用,我们一同学习xpath

    目录 什么是XPath? xpath语法 知识点 节点 选取节点: 选取a节点下所有的href属性 ../ 选取父节点 bookstore/book 选取子元素li bookstore//book 不 ...

  10. redisson分布式锁lua脚本翻译

    1.获取锁 lock入参:keys[1]:自定义锁的key  RLock lock = redissonClient.getLock(lockKey);argv[1]=锁的租期,默认30s  argv ...