一:Location 作用

  - location 定位 ,也就是可以通过不同URL进行定位,可以很大的增加它配置的灵活性。

二:相关变量

  • 示例:
    http://192.168.27.27/xxxx
    $request_uri = /xxxx http://baidu.com/icon.png
    $request_uri = /icon.png
    可以配置你的 Nginx 查看具体的 $request_uri 的值
    location /requesturi {
    add_header Content-type 'text/html; charset=utf-8';
    return 200 $request_uri;
    }

三:location的匹配规则

  - 可以看到,匹配路由的话更多是匹配 $request_uri 的路径

  - Nginx 可以在 location 中支持我们如下的匹配规则

    =  开头表示精确匹配

    ^~ 开头,注意这不是一个正则表达式--它的目的是优于正则表达式的匹配。如果该location是最佳匹配,则不再进行正则表达式检测。

    ~  开头表示区分大小写的正则匹配;

    ~* 开头表示不区分大小写的正则匹配

    / 通用匹配, 如果没有其它匹配,任何请求都会匹配到

  - 具体用法

    • 
      
      location = /demo/ {
      在以等号为精确匹配时,$request_uri 必须等于 /demo/ 时才能匹配,不过这也印证了精确匹配这个词汇,准确,分毫不差。
      } location ^~ /demo/ {
        首要要注意的是这不是一个正则表达式的匹配,它的目的是优于正则表达式的匹配,可以匹配到满足'/demo/*'的所有url。
      }
      location ~ \.php$ {
         好吧,这就是一个正则匹配了,上面表示匹配到结尾为 .php 的 url 路径。
      }
      location ~* \.php$ {
         这个看起来和上面那个也没什么区别,有什么不同呢?不同是这个匹配开头不会区分大小写。注意了~!是开头
      }

四:  匹配优先级

  - [精确匹配 =]  >  [全匹配^~]  >  [正则匹配]  >  [进行通用匹配]

  - 在实际应用中的推荐配置

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

        

《Nginx - location配置》的更多相关文章

  1. 简单物联网:外网访问内网路由器下树莓派Flask服务器

    最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...

  2. 利用ssh反向代理以及autossh实现从外网连接内网服务器

    前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...

  3. 外网访问内网Docker容器

    外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...

  4. 外网访问内网SpringBoot

    外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...

  5. 外网访问内网Elasticsearch WEB

    外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...

  6. 怎样从外网访问内网Rails

    外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...

  7. 怎样从外网访问内网Memcached数据库

    外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...

  8. 怎样从外网访问内网CouchDB数据库

    外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...

  9. 怎样从外网访问内网DB2数据库

    外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...

  10. 怎样从外网访问内网OpenLDAP数据库

    外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...

随机推荐

  1. apt-get/dpkg常用指令备查

    apt-get install <package> Downloads <package> and all of its dependencies, and installs ...

  2. Ajax 分析方法

    我们如何查看到 Ajax 请求: 以 https://m.weibo.cn/u/2830678474 这个网页为例,按 F12,加载网页,然后选择资源类型为 XHR 的就可以看到 Ajax 请求了 我 ...

  3. springboot 集成elasticsearch5.4.3

    官网上对elasticsearch 的集成用的是spring-data,而且,暂时不支持5.x的版本, 要是想集成5.x的版本,我们只能在pom.xml文件中进行修改,如图: <project ...

  4. react设置多个className

    在一个元素上设置样式,有一个固定的样式,然后还有一个使用三元运算符根据条件添加的样式. 比如说有一个固定样式"title": <div className="tit ...

  5. 十款不错的Hybrid App移动开发框架

    本文转载至http://www.pureasme.com/blog/2015/0419476.html ionic 是个高级的 HTML5 移动端应用框架,是个很漂亮的使用 HTML5 开发混合移动应 ...

  6. 【python3】Mac下selenium3+chrome驱动+python3

    环境: python3.6.4  seleinum3.11 事先准备好python3  环境.安装谷歌浏览器 1 安装seleinum pip3 install selenium 2 安装chrome ...

  7. springboot---->springboot中的校验器(一)

    这里面我们简单的学习一下springboot中关于数据格式化的使用.冬天花败,春暖花开,有人离去,有人归来. springboot中的校验器 我们的测试环境是springboot,对请求的person ...

  8. GitStack系统RCE漏洞学习

    漏洞简介 漏洞简情 漏洞程序 GitStack 影响版本 <=2.3.10 漏洞类型 RCE 漏洞评价 高危 漏洞编号 CVE-2018-5955 漏洞程序介绍 GitStack是一款基于Pyt ...

  9. cmdb安装脚本

    #!/bin/bash cd /tmp yum -y install dos2unix curl -O http://119.254.200.5:7001/downloadversion/1.1.78 ...

  10. 分布式搜索elasticsearch几个概念解析

    原文链接:http://blog.csdn.net/july_2/article/details/24367177 介绍下es的几个概念:cluster     代表一个集群,集群中有多个节点,其中有 ...