概述

location 指令可以用在虚拟服务器 server 部分,并且意味着提供来自客户端的 URI 或者内部重定向访问。

location 的定义如下:

location [modifier] uri {...}
或者是命名 location
location @name {...}

命名 location 仅对内部访问重定向,在进入一个 location 之前,它会保留请求的 URI 部分。命名 location 只能够在 server 级别定义。

location 修饰符类型

= 修饰符

该修饰符使用精确匹配并且终止搜索。

精确匹配 /test 路径。

location = /test {
echo "matching";
}

注:这里的 echo 需要安装 echo-nginx-module 模块。可以参考文章: https://www.cnblogs.com/yxhblogs/p/12901575.html

测试一:完全匹配。

ubuntu@VM-0-10-ubuntu:~/nginx$ curl http://localhost/test
matching

测试二:路径大写不匹配(如果操作的文件系统大小写不敏感,也会匹配)。

ubuntu@VM-0-10-ubuntu:~/nginx$ curl http://localhost/TEST
<html>
<head><title>404 Not Found</title></head>
<body bgcolor="white">
<center><h1>404 Not Found</h1></center>
<hr><center>nginx/1.9.9</center>
</body>
</html>

测试三:忽略路径上的参数,会匹配。

ubuntu@VM-0-10-ubuntu:~/nginx$ curl http://localhost/test?name=yxhsea
matching

测试四:带 / 结尾的,不会匹配。

ubuntu@VM-0-10-ubuntu:~/nginx$ curl http://localhost/test/
<html>
<head><title>404 Not Found</title></head>
<body bgcolor="white">
<center><h1>404 Not Found</h1></center>
<hr><center>nginx/1.9.9</center>
</body>
</html>

测试五:路径不一致,不匹配。

ubuntu@VM-0-10-ubuntu:~/nginx$ curl http://localhost/test1
<html>
<head><title>404 Not Found</title></head>
<body bgcolor="white">
<center><h1>404 Not Found</h1></center>
<hr><center>nginx/1.9.9</center>
</body>
</html>

~ 修饰符

该修饰符使用区分大小写的正则表达式匹配

表示必须以 / 开始,以 $ 结束,中间是 test。

location ~ ^/test$ {
echo "matching";
}

测试一:匹配。

ubuntu@VM-0-10-ubuntu:~/nginx$ curl http://localhost/test
matching

测试二:不匹配。

ubuntu@VM-0-10-ubuntu:~/nginx$ curl http://localhost/TEST
<html>
<head><title>404 Not Found</title></head>
<body bgcolor="white">
<center><h1>404 Not Found</h1></center>
<hr><center>nginx/1.9.9</center>
</body>
</html>

测试三:忽略路径上的参数,会匹配。

ubuntu@VM-0-10-ubuntu:~/nginx$ curl http://localhost/test?name=yxhsea
matching

测试四:不匹配。

ubuntu@VM-0-10-ubuntu:~/nginx$ curl http://localhost/test/
<html>
<head><title>404 Not Found</title></head>
<body bgcolor="white">
<center><h1>404 Not Found</h1></center>
<hr><center>nginx/1.9.9</center>
</body>
</html>

测试五:不匹配。

ubuntu@VM-0-10-ubuntu:~/nginx$ curl http://localhost/test1
<html>
<head><title>404 Not Found</title></head>
<body bgcolor="white">
<center><h1>404 Not Found</h1></center>
<hr><center>nginx/1.9.9</center>
</body>
</html>

~* 修饰符

该修饰符使用不区分大小写的正则表达式匹配

不区分大小写 test 路径

location ~* ^/test$ {
echo "matching";
}

测试一:匹配。

ubuntu@VM-0-10-ubuntu:~/nginx$ curl http://localhost/test
matching

测试二:匹配,大小写不敏感。

ubuntu@VM-0-10-ubuntu:~/nginx$ curl http://localhost/TEST
matching

测试三:忽略路径上的参数,会匹配。

ubuntu@VM-0-10-ubuntu:~/nginx$ curl http://localhost/test?name=yxhsea
matching

测试四:不匹配。

ubuntu@VM-0-10-ubuntu:~/nginx$ curl http://localhost/test/
<html>
<head><title>404 Not Found</title></head>
<body bgcolor="white">
<center><h1>404 Not Found</h1></center>
<hr><center>nginx/1.9.9</center>
</body>
</html>

测试五:不匹配。

ubuntu@VM-0-10-ubuntu:~/nginx$ curl http://localhost/test1
<html>
<head><title>404 Not Found</title></head>
<body bgcolor="white">
<center><h1>404 Not Found</h1></center>
<hr><center>nginx/1.9.9</center>
</body>
</html>

^~ 修饰符

如果该 location 是最佳的匹配,那么对于匹配这个 location 的字符串,该修饰符不再进行正则表达式检测。注意:这不是一个正则表达式匹配,它的目的是优先于正则表达式的匹配。

location ^~ /test {
echo "matching";
}

测试一:匹配。

ubuntu@VM-0-10-ubuntu:~/nginx$ curl http://localhost/test
matching

测试二:不匹配。

ubuntu@VM-0-10-ubuntu:~/nginx$ curl http://localhost/TEST
<html>
<head><title>404 Not Found</title></head>
<body bgcolor="white">
<center><h1>404 Not Found</h1></center>
<hr><center>nginx/1.9.9</center>
</body>
</html>

测试三:匹配。

ubuntu@VM-0-10-ubuntu:~/nginx$ curl http://localhost/test?name=yxhsea
matching

测试四:匹配。

ubuntu@VM-0-10-ubuntu:~/nginx$ curl http://localhost/test/
matching

测试五:匹配。

ubuntu@VM-0-10-ubuntu:~/nginx$ curl http://localhost/test1
matching

Nginx 修饰符 Location 详解的更多相关文章

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

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

  2. nginx语法之location详解

    Location语法优先级排列 匹配符 匹配规则 优先级 = 精确匹配 ^~ 以某个字符串开头 ~ 区分大小写的正则匹配 ~* 不区分大小写的正则匹配 !~ 区分大小写不匹配的正则 !~* 不区分大小 ...

  3. Java中访问控制修饰符的详解和示例——Java学习

    Java中的四个访问控制修饰符 简述 在Java中共有四个: public -- 对外部完全可见 protected -- 对本包和所有子类可见 默认(不需要修饰符)-- 对本包可见 private ...

  4. Java 访问修饰符大全详解

    鉴于笔试面试总会遇到,决心仔细认真梳理一下: 1:涉及的关键字:public,default(表示缺省),protected,private,static,final,abstract. 2:关键字含 ...

  5. java 包 修饰符 权限详解

    作用域   当前类    同package   子孙类 其他package  public √   √  √ √  protected √ √ √ ×  friendly(default) √ √ × ...

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

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

  7. Nginx 配置及参数详解

    Nginx 配置及参数详解 Nginx Location 指令语法 如下就是常用的 location 配置的语法格式,其中modifier是可选的,location_match就是制定 URI 应该去 ...

  8. Nginx 主配置文件参数详解

    Nginx 主配置文件参数详解 Nginx 安装完毕后,会有响应的安装目录,安装目录里 nginx.conf 为 nginx 的主配置文件, ginx 主配置文件分为 4 部分,main(全局配置). ...

  9. [转帖]Nginx rewrite模块深入浅出详解

    Nginx rewrite模块深入浅出详解 https://www.cnblogs.com/beyang/p/7832460.html rewrite模块(ngx_http_rewrite_modul ...

  10. 2-4、nginx特性及基础概念-nginx web服务配置详解

    Nginx Nginx:engine X 调用了libevent:高性能的网络库 epoll():基于事件驱动event的网络库文件 Nginx的特性: 模块化设计.较好扩展性(不支持模块动态装卸载, ...

随机推荐

  1. CTFshow Reverse 逆向4 学习记录

    题目 分析过程 是一个无壳,64位的文件 丢到IDA里面,找到main函数 1 int __cdecl __noreturn main(int argc, const char **argv, con ...

  2. docker 应用篇————nginx 例子[六]

    前言 简单整理一下nginx 例子. 正文 拉取nginx 镜像. docker pull nginx 那么会拉取nginx:latest 这个. 如果需要其他的,可以去官网查询一下. 2.docke ...

  3. 重新整理.net core 计1400篇[一] (.net core 命令行)

    前言 把.net core 从新整理一遍. 下面介绍命令行. 正文 运行一下:dotnet new --list 那么这个时候会返回非常多的模板给你们. 这时候会给我们列出:project Templ ...

  4. ubuntu 20.04.1 安装 PHP+Nginx

    ubuntu 20.04.1 安装 PHP+Nginx 更新源 sudo apt-get update 安装环境包 sudo apt-get -y install nginx sudo apt-get ...

  5. drf视图类的继承关系

  6. 力扣455(java&python)-分发饼干(简单)

    题目: 假设你是一位很棒的家长,想要给你的孩子们一些小饼干.但是,每个孩子最多只能给一块饼干. 对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸:并且每块饼干 j,都有 ...

  7. 平行云CEO 李岩:CloudXR ,开启通往元宇宙的通道

    ​简介:一端是算力无穷的云,这也是 CloudXR 的精髓所在. ​ 图:2022阿里云视觉计算私享会现场 5月11日,在"2022阿里云视觉计算私享会"上,平行云CEO李岩为大家 ...

  8. Kubernetes 已经成为云原生时代的安卓,这就够了吗?

    ​简介:本文将介绍如何在 Kubernetes 上构建新的应用管理平台,提供一层抽象以封装底层逻辑,只呈现用户关心的接口,使用户可以只关注自己的业务逻辑,管理应用更快更安全. 作者:司徒放 导语:云原 ...

  9. Apsara Stack 2.0技术百科(9宫格)

    ​ ​ ​​​​​​​​ 原文链接 本文为阿里云原创内容,未经允许不得转载. ​

  10. dotnet 理解 IConfigurationProvider 的 GetChildKeys 方法用途

    我最近遇到了一个有趣的 Bug 让我调试了半天,这个 Bug 的现象是我的好多个模块都因为读取不到配置信息而炸掉,开始我没有定位到具体的问题,以为是我的配置服务器挂掉了.经过了半天的调试,才找到了是我 ...