附001.Nginx location语法规则
一 location规则
1.1 location语法
1 = #表示精确严格匹配,只有请求的url路径与后面的字符串完全相等时,才会命中。同时若这个查询匹配,将停止搜索并立即处理此请求。
2 ~ #表示该规则是使用正则定义的,且区分大小写;
3 ^~ #表示uri以某个常规字符串开头,匹配 URI 路径。且nginx不对url做编码,如请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格);
4 ~* #表示该规则是使用正则定义的,且不区分大小写;
5 / #用户所使用的代理(一般为浏览器);
1 $http_x_forwarded_for #通过代理服务器来记录客户端的ip地址;
2 $http_referer #记录用户是从哪个链接访问过来的。
1.2 location匹配过程
- 如果找到了精确匹配的location,也就是使用了=修饰符的location,结束查找,使用它的配置。
- 所有剩下的常规字符串,采用最长匹配;
- 继续判断正则表达式的解析结果,按配置里的正则表达式顺序为准,由上至下开始匹配,一旦匹配成功1个,立即返回结果,并结束解析过程。
- 如果第3条规则产生匹配的话,结果被使用。否则,使用第2条规则的结果。
- 使用正则定义的location在配置文件中出现的顺序很重要。因为找到第一个匹配的正则后,查找就停止了,后续定义的匹配(不管精度如何)都不再进行查找。
- 使用精确匹配可以提高查找的速度。例如经常请求/的话,可以使用=来定义location。
1.3 location匹配优先级
二 location规则示例
2.1 环境预设
1 [root@nginx01 ~]# vi /etc/nginx/conf.d/location.conf
2 server {
3 listen 80;
4 server_name location.linuxds.com;
5 access_log /var/log/nginx/location.access.log main;
6 error_log /var/log/nginx/location.error.log warn;
7 location = / {
8 add_header Content-Type text/plain;
9 return 200 'A';
10 # 精确匹配 / ,主机名后面不能带任何字符串
11 }
12 location = /login {
13 add_header Content-Type text/plain;
14 return 200 'B';
15 }
16 location ^~ /static/ {
17 add_header Content-Type text/plain;
18 return 200 'C';
19 # 匹配任何以 /static/ 开头的地址,匹配以后,不在往下检索正则,立即采用这一条。
20 }
21 location ^~ /static/files {
22 add_header Content-Type text/plain;
23 return 200 'D';
24 # 匹配任何以 /static/files 开头的地址,匹配以后,不在往下检索正则,立即采用这一条。
25 }
26 location ~ \.(gif|jpg|png|js|css|txt) {
27 add_header Content-Type text/plain;
28 return 200 'E';
29 }
30 location ~* \.txt$ {
31 add_header Content-Type text/plain;
32 return 200 'F';
33 # 匹配所有以 txt 结尾的请求
34 # 然而,所有请求 /static/ 下的txt会被 规则 C 处理,因为 ^~ 到达不了这一条正则。
35 }
36 location /image {
37 add_header Content-Type text/plain;
38 return 200 'G';
39 # 匹配任何以 /image/ 开头的地址,匹配符合以后,还要继续往下搜索;
40 # 只有后面的正则表达式没有匹配到时,这一条才会采用这一条。
41 }
42 location / {
43 add_header Content-Type text/plain;
44 return 200 'H';
45 # 因为所有的地址都以 / 开头,所以这条规则将匹配到所有请求。
46 # 但是正则和最长字符串会优先匹配。
47 }
48 }
1 [root@nginx ~]# nginx -t -c /etc/nginx/nginx.conf #检查配置文件
2 [root@nginx ~]# nginx -s reload #重载配置文件
2.2 匹配测试










三 正则与判断
附001.Nginx location语法规则的更多相关文章
- [nginx]location语法
location语法 location语法格式 location [=|~|~*|^~] uri { .... } location [=|~|~*|^~] uri {....} 指令 匹配标识 匹配 ...
- nginx location语法使用说明
语法规则: location [=|~|~*|^~] /uri/ { … } = 开头表示精确匹配 ^~ 开头表示uri以某个常规字符串开头,理解为匹配 url路径即可.nginx不对url做编码,因 ...
- Nginx Location 语法,与简单配置[转]
一、介绍Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”, 是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器 ...
- Nginx location 匹配规则详解
语法规则 location [=|~|~*|^~] /uri/ { … } 模式 含义 location = /uri = 表示精确匹配,只有完全匹配上才能生效 location ^~ /uri ^~ ...
- nginx Location 语法基础知识
URL地址匹配是Nginx配置中最灵活的部分 Location 支持正则表达式匹配,也支持条件匹配,用户可以通过location指令实现Nginx对动丶静态网页的过滤处理. Nginx locatio ...
- [转载+整理]Nginx Location匹配规则
目录 规则语法 location 分类 匹配顺序: 扩展 location / {}和 location =/ {}的区别 测试 规则语法 语法 匹配规则 空 普通匹配(遵循最大前缀匹配规则, 优先度 ...
- nginx location 语法
location 语法location 有”定位”的意思, 根据Uri来进行不同的定位.在虚拟主机的配置中,是必不可少的,location可以把网站的不同部分,定位到不同的处理方式上.比如, 碰到.p ...
- [整理] Nginx Location 匹配规则
目录 规则语法 location 分类 匹配顺序: 扩展 location / {}和 location =/ {}的区别 如何快速测试 规则语法 语法 匹配规则 空 普通匹配(遵循最大前缀匹配规则, ...
- nginx location匹配规则
谢谢作者的分享精神,原文地址:http://www.nginx.cn/115.html location匹配命令 ~ #波浪线表示执行一个正则匹配,区分大小写~* #表示执行一个正则匹 ...
随机推荐
- Java中的final关键字解析
一.final关键字的基本用法 1.修饰类 当用final修饰一个类时,表明这个类不能被继承.注意: final类中的成员变量可以根据需要设为final, final类中的所有成员方法都会被隐式地 ...
- linux网络编程-一个简单的线程池(41)
有时我们会需要大量线程来处理一些相互独立的任务,为了避免频繁的申请释放线程所带来的开销,我们可以使用线程池 1.线程池拥有若干个线程,是线程的集合,线程池中的线程数目有严格的要求,用于执行大量的相对短 ...
- ant +jmeter+jenkins接口自动化测试二
[Jmeter篇]Jmeter+Ant+Jenkins接口自动化测试集成之半路逆转(二) 橙子探索测试发表于橙子探索测试订阅 72 [Jmeter篇]jmeter+Ant+Jenkins接口自动化测试 ...
- 如果人生也能存档——C#中的备忘录模式
大家好,老胡又和大家见面了.首先承认今天的博客有点标题党了,人生是没有存档,也没有后悔药的.有存档和后悔药的,那是游戏,不知道这是不是游戏让人格外放松的原因之一. 今天恰逢端午放假,就让我们来试着做一 ...
- linux中神奇的命令alias
在linux中大家应该都知道,有些命令和参数特别繁琐,而且还是大量输入这些命令,这个时候我们就可以使用linux中的alias命令来给这些繁琐的命令起别名,但是,alias 命令只对当前终端有效,当终 ...
- Selenium Grid的原理、配置与使用(转)
Selenium GridSelenium Grid在前面介绍Selenium的时候说过它有三大组件,Selenium Grid就是其中之一而作用就是分布式执行测试.讲分布式之前还是要说说UI自动化的 ...
- 入门大数据---通过Yarn搭建MapReduce和应用实例
上一篇中我们了解了MapReduce和Yarn的基本概念,接下来带领大家搭建下Mapreduce-HA的框架. 结构图如下: 开始搭建: 一.配置环境 注:可以现在一台计算机上进行配置,然后分发给其它 ...
- 升降梯上——玄学dp
升降梯上 题目描述 开启了升降梯的动力之后,探险队员们进入了升降梯运行的那条竖直的隧道,映入眼帘的是一条直通塔顶的轨道.一辆停在轨道底部的电梯.和电梯内一杆控制电梯升降的巨大手柄. \(Nescafe ...
- Kafka入门(1):概述
摘要 在本文中,我将从为什么需要消息队列开始讲起,举两个小例子,跟你聊聊目前消息队列的一些使用场景. 比如消息队列在复杂系统中的解耦,又比如消息队列在高并发下的场景如果让流量变得更平缓. 随后我会跟你 ...
- vue+element-ui JYAdmin后台管理系统模板-集成方案【项目搭建篇2】
项目搭建时间:2020-06-29 本章节:讲述基于vue/cli, 项目的基础搭建. 本主题讲述了: 1.跨域配置 2.axios请求封装 3.eslint配置 4.环境dev,test,pro(开 ...