当前位置: 首页 > news >正文

Nginx(四)-- 配置文件之location

1.location的作用

  location主要做定位功能,根据uri来进行不同的定位。

2.location的语法

  location [=|~|~*|^~] /uri/ { …}  

  • = 开头表示精确匹配
  • ^~ 表示uri以某个常规字符串开头,相当于匹配uri路径
  • ~ 区分大小写的正则匹配
  • !~ 区分大小写不匹配
  • !~* 不区分大小不匹配
  • ~* 不区分大小写的正则匹配
  • / 通用匹配

  server中可以有多个location,来进行匹配。

3.匹配的优先级 ---  精准匹配 > 一般匹配

  (1) 在nginx.conf文件中的添加如下内容:

        

        第一个表示 是 一般匹配,第二个表示 精准匹配。

  (2) 在 nginx/html文件夹下 新建 yiban 和 jingzhun 文件夹,分别 在里面 新建 index.html ,在 yiban/index.html中 写入 :This is yiban page.

             在 jingzhun/index.html中写入:This is jingzhun page. 以作区分

  (3) 从新加载nginx.con文件:./nginx -s reload

  (4) 在浏览器中访问 192.168.80.128/index.html,可以 看到:This is jingzhun page.

        说明 精准匹配的优先级 大于 一般匹配。

        

  (5) 将上图中的内容改为如下:

 1         location /index.html {
 2              root html/yiban;
 3              index index.html;
 4         }
 5 
 6         location = /index.html {   # 在这里加了一个空格
 7              root html/jingzhun;
 8              index index.html;
 9         }
10 
11         location / {
12             root   html;
13             index  index.html index.htm;
14         }

    然后重新加载配置文件,直接访问IP地址:192.168.80.128,结果 还是:This is jingzhun page.

    这是因为在nginx中做了多次匹配,访问 IP地址,首先 匹配的 是 第11行,然后进去 之后 是 index.html,这个index.html 又和 第6行中的 location匹配,就跳转到jingzhun/index.html了。

4.匹配的优先级 ---  正则匹配 > 一般匹配

  1. 如果两个location都是一般匹配,则会按照最常路径匹配。如下:

      

      就会匹配图中的第一个。

      总结:1. 先匹配uri前缀部分。

       2.因为location不是严格匹配,而是一个前缀匹配,按照上图所示,就会产生两个location匹配。

       3.如果通过192.168.80.128/prefix/mid/index.html ,那么会按照最长路径进行匹配,即匹配 第一个。

  2. 如果既有一般匹配,又有正则匹配,如下:

     

    当访问 192.168.80.128/prefix/mid/java/index.html时,先匹配 第一个,然后匹配第二个。

    匹配优先级:

            1.首先匹配精准路径

     2.如果两个location都是一般匹配规则,那么会按照最长路径匹配

       3.一般匹配和正则匹配的过程是:首先会选择一般匹配过程中的大前缀匹配,但是匹配过程不会停止,最大前缀匹配只是一个临时结果,nginx还会继续检查正则location。按照正则location在配置文件的物理顺序做匹配,如果匹配到一条正则location,就不会考虑后面的规则。

 

转载于:https://www.cnblogs.com/xbq8080/p/7076481.html

相关文章:

  • 自定义View中的Path
  • PHP 从数组中删除指定元素
  • Hadoop 尝试
  • jQuery淡入淡出的轮播图
  • VMware® Workstation 12 Pro Linux Ubuntu 中subversion的服务器搭建
  • client offset scroll的区别
  • 彩扩机项目--散热马达驱动部分
  • hihoCoder挑战赛29
  • 如何开发jQuery插件
  • linux 目录详解
  • c#中的is和as运算符
  • oop_day02_类、重载_20150810
  • js随笔-变量作用域
  • EasyUI Tooltip 提示框
  • 2492 上帝造题的七分钟 2
  • 「译」Node.js Streams 基础
  • gops —— Go 程序诊断分析工具
  • HTTP--网络协议分层,http历史(二)
  • Invalidate和postInvalidate的区别
  • JavaScript 基本功--面试宝典
  • JavaScript 是如何工作的:WebRTC 和对等网络的机制!
  • JS专题之继承
  • Laravel核心解读--Facades
  • LeetCode刷题——29. Divide Two Integers(Part 1靠自己)
  • Linux链接文件
  • mysql innodb 索引使用指南
  • Netty 4.1 源代码学习:线程模型
  • scrapy学习之路4(itemloder的使用)
  • SpringBoot几种定时任务的实现方式
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • vue 配置sass、scss全局变量
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • XForms - 更强大的Form
  • 大快搜索数据爬虫技术实例安装教学篇
  • 大型网站性能监测、分析与优化常见问题QA
  • 基于Android乐音识别(2)
  • 两列自适应布局方案整理
  • 如何邀请好友注册您的网站(模拟百度网盘)
  • 数据可视化之 Sankey 桑基图的实现
  • 微服务核心架构梳理
  • 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP
  • 一些关于Rust在2019年的思考
  • 在electron中实现跨域请求,无需更改服务器端设置
  • Semaphore
  • 资深实践篇 | 基于Kubernetes 1.61的Kubernetes Scheduler 调度详解 ...
  • # 安徽锐锋科技IDMS系统简介
  • (01)ORB-SLAM2源码无死角解析-(66) BA优化(g2o)→闭环线程:Optimizer::GlobalBundleAdjustemnt→全局优化
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (4)(4.6) Triducer
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (二十四)Flask之flask-session组件
  • (附表设计)不是我吹!超级全面的权限系统设计方案面世了
  • (黑客游戏)HackTheGame1.21 过关攻略
  • (十三)Flask之特殊装饰器详解
  • (未解决)macOS matplotlib 中文是方框