Nginx-13 Location 指令介绍

************ 如有侵权请提示删除 ***************

location:用来设定不同URI 的文件系统的路径映射,一个server中可以设置多个location,Nginx会根据用户请求的URI 地址来逐个判断location, 找出最佳匹配规则,然后应用该location中定义的配置。

语法规则: location [=||*|^~] /uri/ { … }

  • = 开头表示精确匹配

  • ^~ 开头表示uri以某个常规字符串开头,理解为匹配 url路径即可。nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格)。以xx开头

  • ~ 开头表示区分大小写的正则匹配 以xx结尾

  • ~* 开头表示不区分大小写的正则匹配 以xx结尾

  • !和!*分别为区分大小写不匹配及不区分大小写不匹配 的正则

  • / 通用匹配,任何请求都会匹配到。

多个location配置的情况下匹配顺序为
首先精确匹配 =-》其次以xx开头匹配^~-》然后是按文件中顺序的正则匹配-》最后是交给 / 通用匹配。

当有匹配成功时候,停止匹配,按当前匹配规则处理请求。

location = / {#规则A
}
location = /login {#规则B
}
location ^~ /static/ {#规则C
}
location ~ \.(gif|jpg|png|js|css)$ {#规则D,注意:是根据括号内的大小写进行匹配。括号内全是小写,只匹配小写
}
location ~* \.png$ {#规则E
}
location !~ \.xhtml$ {#规则F
}
location !~* \.xhtml$ {#规则G
}
location / {#规则H
}

那么产生的效果如下:

  • 访问根目录/, 比如http://localhost/ 将匹配规则A

  • 访问 http://localhost/login 将匹配规则B,http://localhost/register 则匹配规则H

  • 访问 http://localhost/static/a.html 将匹配规则C

  • 访问 http://localhost/a.gif, http://localhost/b.jpg 将匹配规则D和规则E,但是规则D顺序优先,规则E不起作用, 而 http://localhost/static/c.png 则优先匹配到 规则C

  • 访问 http://localhost/a.PNG 则匹配规则E, 而不会匹配规则D,因为规则E不区分大小写。

  • 访问 http://localhost/a.xhtml 不会匹配规则F和规则G,

http://localhost/a.XHTML不会匹配规则G,(因为!)。规则F,规则G属于排除法,符合匹配规则也不会匹配到,所以想想看实际应用中哪里会用到。

  • 访问 http://localhost/category/id/1111 则最终匹配到规则H,因为以上规则都不匹配,这个时候nginx转发请求给后端应用服务器,比如FastCGI(php),tomcat(jsp),nginx作为方向代理服务器存在。

所以实际使用中,个人觉得至少有三个匹配规则定义,如下:

#直接匹配网站根,通过域名访问网站首页比较频繁,使用这个会加速处理,官网如是说。
#这里是直接转发给后端应用服务器了,也可以是一个静态首页
# 第一个必选规则
location = / {proxy_pass http://tomcat:8080/index
}# 第二个必选规则是处理静态文件请求,这是nginx作为http服务器的强项
# 有两种配置模式,目录匹配或后缀匹配,任选其一或搭配使用
location ^~ /static/ {                              //以xx开头root /webroot/static/;
}
location ~* \.(gif|jpg|jpeg|png|css|js|ico)$ {     //以xx结尾root /webroot/res/;
}#第三个规则就是通用规则,用来转发动态请求到后端应用服务器
#非静态文件请求就默认是动态请求,自己根据实际把握
location / {proxy_pass http://tomcat:8080/
}

参考:nginx之location配置_hellochenlian的专栏-CSDN博客

Location 指令介绍相关推荐

  1. nginx中的location指令

    1.location 介绍 location是Nginx中的块级指令(block directive),location指令的功能是用来匹配不同的url请求,进而对请求做不同的处理和响应,这其中较难理 ...

  2. Nginx中server_name指令介绍

    Nginx中server_name指令介绍 用途 根据官方文档说明,用来设置虚拟服务器,对于用IP还是请求头部中的Host字段内容设置这个指令的值,没有明确的分别. 用法 指令后跟特定域名,此时第一个 ...

  3. vue使用,及指令介绍,计算属性/过滤器

    目录 Vue是什么 vue的单页面原理 Vue的使用 指令介绍: v-if和 v-show的区别 v-on 事件绑定: v-bind 绑定属性 处理数组绑定 v-model双向数据绑定 created ...

  4. C#中的预编译指令介绍

    原文:C#中的预编译指令介绍 1.#define和#undef 用法: #define DEBUG #undef DEBUG #define告诉编译器,我定义了一个DEBUG的一个符号,他类似一个变量 ...

  5. Vue.js-Day01-AM【第一次学习-安装、基础使用(引入方式)、数据展示、指令介绍(v-html、v-text、v-bind、v-if、v-for】

    Vue.js实训[基础理论(5天)+项目实战(5天)]博客汇总表[详细笔记] 目   录 1.讲在前面 课程内容 实训课内容 2.Vue.js介绍 2.1.安装 开发环境 版本介绍 2.2.基础使用 ...

  6. 浅析VS2010反汇编 VS 反汇编方法及常用汇编指令介绍 VS2015使用技巧 调试-反汇编 查看C语言代码对应的汇编代码...

    浅析VS2010反汇编 2015年07月25日 21:53:11 阅读数:4374 第一篇 1. 如何进行反汇编 在调试的环境下,我们可以很方便地通过反汇编窗口查看程序生成的反汇编信息.如下图所示. ...

  7. Nginx的location指令

    location指令 server{listen 80;server_name localhost;location / {}location /abc{}... } location:用来设置请求的 ...

  8. [Nginx]location 指令说明

    location 指令说明 该指令用于匹配 URL. 语法如下: 1.= :用于不含正则表达式的 uri 前,要求请求字符串与 uri 严格匹配,如果匹配 成功,就停止继续向下搜索并立即处理该请求. ...

  9. 我的世界服务器怎么显示腐竹来了,我的世界服务器主人可用指令一览 我的世界腐竹常用指令介绍_游侠手游...

    我的世界服务器主人可用指令一览,我的世界腐竹指令介绍.作为我的世界中一个服务器的主人,你可以掌控这个服务器的天时地利,具体做法自然就是使用指令了.接下来小编就给大家带来服主的常用指令介绍,大家一起来看 ...

最新文章

  1. 美国杜克大学计算机专业世界排名,美国杜克大学世界排名情况怎么样?
  2. python划分数据集用pandas_用pandas划分数据集实现训练集和测试集
  3. 三十九、ETL工具Kettle基础使用
  4. java不规则算法_分布式id生成算法 snowflake 详解
  5. 消息中间件学习总结(13)——Kafka与RocketMQ的单机系统可靠性比较分析
  6. Button with Round Progress
  7. python字典的常用方法_python操作字典类型的常用方法
  8. Redis在游戏服务器中的应用
  9. 机器学习——支持向量机(SVM)
  10. HCIE Security Anti-DDos系统组成 备考笔记(幕布)
  11. typora快捷键大全
  12. Android 设置屏幕亮度
  13. vue示例todos
  14. linpack环境搭建:Openmpi+Openblas+HPL安装教程
  15. 【探路者】10月13日立会报告(团队第1周-第1次)
  16. 【论文翻译】异构网络的影响与相似性
  17. 2019年电赛准备程序STM32版本
  18. Python 转换圆形、五边形、六边形、八边形PNG图片
  19. 蓝鲸智云功能剖析介绍
  20. 死亡之雨新的僵尸病毒中文破解版 v1.0绿色免安装版

热门文章

  1. 专家分享|物联网正如何改变物理安全的面貌
  2. 煤矿AI智能视频分析识别系统 opencv
  3. 【百度商圈】选中的商圈定位到地图中心点
  4. VISIO画图:乘法器、加法器在哪里?
  5. TOEFL 听力 astronomy
  6. Likely Unlikely 原理与用法
  7. make与sudo make的区别
  8. 浅析磁传感器HALL、AMR、GMR、TMR技术(转载)
  9. php在线画布,html5实现一个简单的在线画板
  10. LLMs:ColossalChat相关的开源训练数据集简介(SFT指令微调数据集+奖励模型排序数据集+RLHF数据集)、RLHF算法实现的三个阶段(监督指令微调→训练奖励模型→RLHF训练模型→​​​