Nginx location规则匹配
^~ 标识符匹配后面跟-一个字符串。匹配字符串后将停止对后续的正则表达式进行匹配,如location ^~ /images/ , 在匹配了/images/这个字符串后就停止对后续的正则匹配
= 精准匹配,如location=/,只会匹配url为/的请求。
/ 通用匹配,如果没有其它匹配,任何请求都会被匹配到
*:重复前面的字符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规则匹配的更多相关文章
- nginx location 正则匹配
nginx 统计语句1.根据访问IP统计UV awk '{print $1}' access.log|sort | uniq -c |wc -l2.统计访问URL统计PV awk '{print $7 ...
- Nginx Location规则
Nginx由内核和模块组成,其中内核的设计非常微小和简洁,完成的工作也非常简单,仅仅通过查找配置文件将客户端的请求映射到一个location block,而location是Nginx配置中的一个指令 ...
- Nginx location指令匹配顺序规则
location匹配命令 1. “= ”,字面精确匹配, 如果匹配,则跳出匹配过程.(不再进行正则匹配) 2. “^~ ”,最大前缀匹配,如果匹配,则跳出匹配过程.(不再进行正则匹配) 3. 不带任何 ...
- nginx里面的location 规则匹配
nginx location语法 ~ # 区分大小写的正则匹配 location ~ \.(gif|jpg|png|js|css)$ { #规则D } ~* # 不区分大小写的正则匹配(和~的功能相同 ...
- nginx location模块--匹配规则
Location语法语法:location [=|~|~*|^~] /uri/ { … } = --> 开头表示精确匹配 ^~ --> 开头表示uri以某个常规字符串开头,理解为匹配url ...
- nginx location URI匹配规则
当nginx收到一个请求后,会截取请求的url部份,去搜索所有location指令中定义的URI匹配模式.在server模块中可以定义多个location指令来匹配不同的url请求,多个不同的loca ...
- nginx location匹配顺序及CI框架的nginx配置
Nginx location匹配顺序如下: 用前缀字符串定义的location规则对URI进行匹配测试. =号定义了精确的前缀字符串匹配,如果发现精确匹配则使用当前规则.否则继续下一步匹配. 匹配其它 ...
- nginx location 语法
location 语法location 有”定位”的意思, 根据Uri来进行不同的定位.在虚拟主机的配置中,是必不可少的,location可以把网站的不同部分,定位到不同的处理方式上.比如, 碰到.p ...
- nginx location 路由的几个配置纪要
1:网上没有查到在线测试 nginx location 规则的网址 在服务器上可以通过 return 返回测试比如 把#号去掉 # location /admin\.php(.*) # { #def ...
随机推荐
- [bzoj4368][IOI2015]boxes纪念品盒_动态规划_单调队列_贪心
bzoj4368 IOI2015 boxes纪念品盒 题目链接:https://lydsy.com/JudgeOnline/problem.php?id=4368 数据范围:略. 题解: 如果在一个最 ...
- 封装一个Model或者Vender类
Model <?php /** * User: Eden * Date: 2019/3/21 * 共有内容 */ class WxPayModel extends Model { protect ...
- Android虚拟机安装apk
将apk放入platform-tools 打开虚拟机之后 进入该目录执行命令
- 使用redis和thread告警并避免重复告警
spring cloud使用redis 增加监控,微服务的监控体系特别重要,这里增加了告警(使用thread异步告警),同时不能短时间内不能重复告警(使用redis避免重复) 1.增加依赖 ...
- WUSTOJ 1277: 小吉吉读书(Java)
1277: 小吉吉读书 题目 有一本 n 页的书,每天都看 ai 页,已知星期 k 买的书,问星期几能看完?更多内容点击标题. 分析 统计出一个星期能看 a 页,看了 a 页又会回到买书的那一 ...
- 处理bugs心法
1. 前提 第一层:遇到异常首先必须告诉自己,冷静,不要慌.(一看到Bug就心慌,那么武功就施展不了了) 2. 入门级 第二层:遇到Bug,第一潜意识看输出异常的信息的(控制台输出,Junit输出,页 ...
- base全家桶的安装使用方法
base编码是Binary-to-text encoding的一种实现方法,它可以把二进制数据(含不可打印的字符)编码成可打印字符序列. 本文会不定时收录“base全家桶”:base64.base32 ...
- 利用Supervisor 管理自己部署的应用程序
首先,在centos7下安装supervisor yum install python-setuptools easy_install supervisor 然后新建配置文件 #新建superviso ...
- Python实现FTP文件定时自动下载
之前遇到技术问题总能在技术博客上得到启发,十分感谢各位的无私分享.而自己却很少发文,固然是水平有限,但也限制了知识积累和总结.今后多总结分享,回馈博客的同时也希望大家多多批评. 一.需求: 某数据公司 ...
- springboot启动流程(六)ioc容器刷新前prepareContext
所有文章 https://www.cnblogs.com/lay2017/p/11478237.html prepareContext方法核心逻辑 上一篇文章中,我们通过createApplicati ...