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) 将上图中的内容改为如下:

         location /index.html {
root html/yiban;
index index.html;
} location = /index.html { # 在这里加了一个空格
root html/jingzhun;
index index.html;
} location / {
root html;
index index.html index.htm;
}

    然后重新加载配置文件,直接访问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,就不会考虑后面的规则。

Nginx(四)-- 配置文件之location的更多相关文章

  1. 第四百零二节,Django+Xadmin打造上线标准的在线教育平台—生产环境部署,uwsgi安装和启动,nginx的安装与启动,uwsgi与nginx的配置文件+虚拟主机配置

    第四百零二节,Django+Xadmin打造上线标准的在线教育平台—生产环境部署,uwsgi安装和启动,nginx的安装与启动,uwsgi与nginx的配置文件+虚拟主机配置 软件版本  uwsgi- ...

  2. Shell脚本创建Nginx的upstream及location配置文件

    #!/bin/sh ##################################################### # Name: create_nginx_conf.sh # Versi ...

  3. nginx详细配置文件 (转)

    Nginx的代码是由一个核心和一系列的模块组成, 核心主要用于提供Web Server的基本功能,以及Web和Mail反向代理的功能:还用于启用网络协议,创建必要的运行时环境以及确保不同的模块之间平滑 ...

  4. Nginx 主配置文件参数详解

    Nginx 主配置文件参数详解 Nginx 安装完毕后,会有响应的安装目录,安装目录里 nginx.conf 为 nginx 的主配置文件, ginx 主配置文件分为 4 部分,main(全局配置). ...

  5. Nginx核心配置文件常用参数详解

    Nginx核心配置文件常用参数详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 关于Nginx权威文档的话童鞋们可以参考Nginx官方文档介绍:http://nginx.org/ ...

  6. nginx中配置文件的讲解

    一: 1.配置文件的结构 nginx由配置文件中指定的指令控制的模块组成. 指令分为简单指令和块指令. 一个简单的指令由空格分隔的名称和参数组成,并以分号(;)结尾. 块指令具有与简单指令相同的结构, ...

  7. Nginx配置配置文件详解

    文章目录 配置文件 nginx.conf配置文件详解 用于调试.定位问题的配置参数 正常运行必备的配置参数 优化性能的配置参数 事件相关配置 Fastcgi相关配置参数 常需要调整的参数 nginx作 ...

  8. 【nginx运维基础(2)】Nginx的配置文件说明及虚拟主机配置示例

    配置文件说明 #定义Nginx运行的用户和用户组 user www www; #nginx进程数,建议设置为当前主机的CPU总核心数. worker_processes 8; #全局错误日志定义类型, ...

  9. Nginx的配置文件(nginx.conf)解析和领读官网

    步骤一:vi nginx.conf配置文件,参考本博文的最下面总结,自行去设置 最后nginx.conf内容为 步骤二:每次修改了nginx.conf配置文件后,都要reload下. index.ht ...

  10. [原]生产环境下的nginx.conf配置文件(多虚拟主机)

    [原]生产环境下的nginx.conf配置文件(多虚拟主机) 2013-12-27阅读110 评论0 我的生产环境下的nginx.conf配置文件,做了虚拟主机设置的,大家可以根据需求更改,下载即可在 ...

随机推荐

  1. 【Unity笔记】UGUI的Image、RawImage控件

    Image控件只能使用Sprite图片,RawImage通常使用Texture类型图片.项目设为2D模式后导入的图片Texture Type会自动转为Sprite. 没有选择源图片时,可以只选择颜色. ...

  2. linux并发concurrency控制

    解决竞态(race conditions)最根本的途径是对共享资源的互斥访问,访问共享资源的代码区被称为临界区(critical sections),对临界区的代码需要以某种互斥机制加以保护.常见的互 ...

  3. C++类的实例化对象的大小之sizeof()

    之所以写这篇<C++类的实例化对象的大小之sizeof()>.是由于在參加笔试的时候遇到例如以下这么一道题,当时感觉就是这个一个坑,但.我还是义无反顾的跳了下去,由于存在知识点盲区啊.现, ...

  4. iOS边练边学--通知机制和键盘处理小练习

    一.发送通知 NSNotification *note = [NSNotification notificationWithName:@"通知的名称,随便写,例如:你妈叫你回家吃饭" ...

  5. Java-jdbc增删改查操作

    java jdbc增删改查操作: package com.gordon.jdbc; import java.sql.Connection; import java.sql.DriverManager; ...

  6. rufus/scheduler

    之前先在initializers 文件夹下建立了一个task.rb ,rails服务启动的时候执行,本地没问题,可是服务器上启动了3个进程,会执行3遍,解决方法是 把task.rb 放到 script ...

  7. archdexls主题设置每页显示游戏数目

    archdexls主题,沒调整前,每页显示10个,这显然不够,尤其在搜狗浏览器上,由于这个主题只有触发下拉滚动条,才会自动在同一页面显示下一页,因此只显示10个甚至不能触发显示下一页这个动作. 原来设 ...

  8. SparkR:数据科学家的新利器

    摘要:R是数据科学家中最流行的编程语言和环境之一,在Spark中加入对R的支持是社区中较受关注的话题.作为增强Spark对数据科学家群体吸引力的最新举措,最近发布的Spark 1.4版本在现有的Sca ...

  9. 【转】 PreTranslateMessage作用和使用方法

    PreTranslateMessage作用和使用方法  PreTranslateMessage是消息在送给TranslateMessage函数之前被调用的,绝大多数本窗口的消息都要通过这里,比较常用, ...

  10. 【转】MFC CListCtrl 使用技巧

    以下未经说明,listctrl默认view 风格为report 相关类及处理函数 MFC:CListCtrl类 SDK:以 “ListView_”开头的一些宏.如 ListView_InsertCol ...