^~    标识符匹配后面跟-一个字符串。匹配字符串后将停止对后续的正则表达式进行匹配,如location ^~ /images/ , 在匹配了/images/这个字符串后就停止对后续的正则匹配

=   精准匹配,如location=/,只会匹配url为/的请求。

~   区分大小写的匹配。
~*    不区分大小写的匹配。
!~     对区分大小写的匹配取非。
!~*    对不区分大小写的匹配取非。
/     通用匹配,如果没有其它匹配,任何请求都会被匹配到
 匹配顺序优先级:
 
(location =)> (location 完整路径)> (location ^~ 路径) > (location ~,~*正则顺序) >(location 部分起始位置) > (/)
 2、正则表达式
*:重复前面的字符0次或多次
?:重复前面的字符0次或1次
+:重复前面的字符1次或多次
.:匹配除换行符以外的任意一个字符
(a|b):匹配a或b
^:以...开头
$:以...结尾
{n}:重复前面的字符n次
{n,}:重复前面的字符n次或更多次
{n,m}:重复前面的字符n-m次
*?:重复前面的字符0次或多次,但尽可能少重复
+?:重复前面的字符1次或多次,但尽可能少重复
??:重复前面的字符0次或1次,但尽可能少重复
{n,m}?:重复前面的字符n-m次,但尽可能少重复
{n}?:重复前面的字符n次以上,但尽可能少重复
3、正则表达式补充
\W:匹配任意不是字母,数字,下划线,汉字的字符(特殊符号)
\S:匹配任意不是空白符的字符
\D:匹配任意非数字的字符
\B:匹配任意不是单词开头或结尾的位置
[a]:匹配单个字符a
[a-z]:匹配a-z小写字符的任意一个
[^a]:匹配除了a以外的任意字符
[^abc]:匹配除了abc这几个字母以外的任意字符
4、Nginx location应用规则
先写一个location,后面匹配挑任意一个,加url的地址(网页路径)花括号里写最终要处理的动作
location [=|~|~*|^~|!~|!~*] /url/{...}
默认值:no
使用字段:server
location参数根据URL的不同需求来进行匹配,可以使用字符串与正则表达式匹配
例:location ~* .*\.jsp$ {
  proxy_pass http://tomcat_server;
}
(1)
http://www.a.com/
location = / {
#精准匹配 / ,主机名后面不能带任何的字符串
[configuration A ]
}
(2)
location / {
#因为所有的地址都以 / 开头,所以这条规则将匹配到所有的请求
#但是正则和最长字符串会优先匹配
[configuration B ]
}
(3)
location / documents/ {
#匹配任意以documents开头的地址,匹配符合以后,还要继续往下搜索
#只有后面的正则表达式没有匹配到时,才会采用这一条
[configuration C ]
}
(4)
location ~  / documents/Abc {
#匹配任意以documents开头的地址,匹配符合以后,还要继续往下搜索
#只有后面的正则表达式没有匹配到时,才会采用这一条
[configuration CC ]
}
(5)
location ^~ /images/ {
#匹配任意以images开头的地址,匹配符合以后,还要继续往下搜索
[configuration D ]
}
(6)
location ~*\.(gif|jpg|jpeg) {
#匹配所有以gif,jpg或jpeg结尾的请求
#然而,所有的请求/images/ 下的图片会被config D 处理,因为 ^ ~ 到达不了这一条正则
[configuration E ]
}
(7)
location  /images/ {
#字符匹配到 /images/,继续往下,会发现 ^~ 存在
[configuration F ]
}
(8)
location /images/abc {
#最长字符串匹配到 /images/abc,继续往下,会发现 ^~ 存在
[configuration G ]
}
6、实验(需要两台虚拟机)
第一台虚拟机确保安装nginx
第二台虚拟机上安装确保搭建好LAMP
(1)在第二台虚拟机上:[root@localhost ~]# rpm -q nfs-utils rpcbind      //查看有没有安装nfs-utils rpcbind这两个软件包
[root@localhost ~]# mkdir /wwwroot         //创建一个文件
[root@localhost ~]# vim /etc/exports      //添加以下内容
/wwwroot 192.168.200.112  (ro) 
[root@localhost ~]# systemctl restart rpcbind
[root@localhost ~]# systemctl restart nfs
(2)[root@localhost ~]# cd /wwwroot/           //在里面添加一张图片
rz
(3)在第一台虚拟机上:
[root@localhost ~]# cd /usr/local/nginx/html/images/          //查看一下里面有在第二台虚拟机上添加的图片
[root@localhost html]# vim index.html          //添加以下内容(把图片加进去)
<img src="data:images/wyb.jpg" />
(4)在网页上访问:192.168.200.112

Nginx location规则匹配的更多相关文章

  1. nginx location 正则匹配

    nginx 统计语句1.根据访问IP统计UV awk '{print $1}' access.log|sort | uniq -c |wc -l2.统计访问URL统计PV awk '{print $7 ...

  2. Nginx Location规则

    Nginx由内核和模块组成,其中内核的设计非常微小和简洁,完成的工作也非常简单,仅仅通过查找配置文件将客户端的请求映射到一个location block,而location是Nginx配置中的一个指令 ...

  3. Nginx location指令匹配顺序规则

    location匹配命令 1. “= ”,字面精确匹配, 如果匹配,则跳出匹配过程.(不再进行正则匹配) 2. “^~ ”,最大前缀匹配,如果匹配,则跳出匹配过程.(不再进行正则匹配) 3. 不带任何 ...

  4. nginx里面的location 规则匹配

    nginx location语法 ~ # 区分大小写的正则匹配 location ~ \.(gif|jpg|png|js|css)$ { #规则D } ~* # 不区分大小写的正则匹配(和~的功能相同 ...

  5. nginx location模块--匹配规则

    Location语法语法:location [=|~|~*|^~] /uri/ { … } = --> 开头表示精确匹配 ^~ --> 开头表示uri以某个常规字符串开头,理解为匹配url ...

  6. nginx location URI匹配规则

    当nginx收到一个请求后,会截取请求的url部份,去搜索所有location指令中定义的URI匹配模式.在server模块中可以定义多个location指令来匹配不同的url请求,多个不同的loca ...

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

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

  8. nginx location 语法

    location 语法location 有”定位”的意思, 根据Uri来进行不同的定位.在虚拟主机的配置中,是必不可少的,location可以把网站的不同部分,定位到不同的处理方式上.比如, 碰到.p ...

  9. nginx location 路由的几个配置纪要

    1:网上没有查到在线测试 nginx location 规则的网址 在服务器上可以通过 return 返回测试比如  把#号去掉 # location /admin\.php(.*) # { #def ...

随机推荐

  1. PCL学习(四)点云转换为网格

    Remove needless points compute normals surface reconstruction get texture(param 4096 basic) save pro ...

  2. CentOS7.0 yum安装 docker

    一.安装docker 1.Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker . root 用户登录操作! 通过  ...

  3. c++语法笔记(中)

    继承与派生 继承面向对象程序设计4个主要特征:抽象,封装,继承,多态性c++通过继承实现可重用性.有时两个类的内容基本相同或有一部分相同,这时可以利用原来声明的类作为基础,再加上新的内容即可,减少了工 ...

  4. Vue.js 父子组件相互传递数据

    父传子 : 子组件接收变量名=父组件传递的数据 如::f-cmsg="fmsg"  注意驼峰问题 子传父:@子组件关联的方法名 = 父组件接受的方法名 如:@func=" ...

  5. 缓冲区Buffer和缓存区Cache的区别

    1.buffer 将数据写入到内存里,这个数据的内存空间在Linux系统里一般被称为缓冲区(buffer),例如:写入到内存buffer缓冲区,即写缓冲. 为了提高写操作性能,数据在写入最终介质或下一 ...

  6. 编写并提取通用 ShellCode

    简易 ShellCode 虽然可以正常被执行,但是还存在很多的问题,因为上次所编写的 ShellCode 采用了硬编址的方式来调用相应API函数的,那么就会存在一个很大的缺陷,如果操作系统的版本不统一 ...

  7. 关于MySQL的驱动org.gjt.mm.mysql.Driver

    今天看了一个比较老视频使用org.gjt.mm.mysql.Driver来驱动连接,便试了一下看看怎么样,结果一直连不上数据库,后来看了tomcat的后台发现有报这个问题,于是把驱动改成com.mys ...

  8. 听课笔记--DP--最大子矩阵和

    最大子矩阵问题 给定一个n*n(0<n<=120)的矩阵, 矩阵内元素有正有负, 请找到此矩阵的内部元素和最大的子矩阵 样例输入: 4 0 -2 -7  0  9  2 -6  2  -4 ...

  9. Python考试_第一次

    python基础数据类型考试题 考试时间:两个半小时 满分100分(80分以上包含80分及格) 一,基础题. 1. 简述变量命名规范(3分) 答:(1) 变量为数字,字母以及下划线的任意组合,且不能以 ...

  10. XCode下在不同位置声明变量的用法(转)

    XCode下在不同位置声明变量的用法 方式一:直接在.h文件@interface中的大括号中声明. @interface Test : NSObject { NSString *str; // 私有变 ...