文档章节

nginx(四) : location 配置详解

开心的哈士奇
 开心的哈士奇
发布于 2018/07/01 22:36
字数 711
阅读 27
收藏 3

location 介绍

location 有”定位”的意思, 根据Uri来进行不同的定位. 在虚拟主机的配置中,是必不可少的,location可以把网站的不同部分,定位到不同的处理方式上.

比如, 碰到.php, 如何调用PHP解释器? --这时就需要location

location 的语法

location [=|~|~*|^~] patt {
}
- 中括号可以不写任何参数,此时称为一般匹配
- 也可以写参数

根据参数的特性,可以大致分为以下三种:

location = patt {} [精准匹配]
location   patt {} [一般匹配]
location ~ patt {} [正则匹配]

location匹配规格介绍

  • 若匹配到目录,nginx 会内部转发一次。
  • 若匹配到文件,有则显示,无则报错。

三种匹配方式介绍

一般匹配
location  /{
   root /var/www/html/;
   index index.htm index.html;
}

注意:/ 后可以跟参数,记录最长的匹配结果。

等值匹配
location = /{
   root /var/www/html/;
   index index.htm index.html;
}

注意:/ 后可以跟参数,匹配成功后直接返回精确结果。

正则匹配
location ~ /image{
   root /var/www/html/;
   index index.htm index.html;
}

注意:/ 后可以跟参数,优先级略低于等值匹配,任一正则命中,返回正则命中结果,并停止匹配。注意:正则匹配会在root目录后加上image, 即如果访问:http://localhost/image/mm.jpg, 则访问的是/var/www/html/image/mm.jpg

三个匹配优先级介绍

  • 1)先判断精准命中,如果命中,立即返回结果并返回结果解析过程。
  • 2)判断普通命中后,如果有多个命中,“记录”下来“最长”的命中结果(注意:记录但不结束,最长的为准)
    1. 判断正则匹配结果,一旦有一个命中,返回匹配结果并结束解析过程。

常见易错多location配置

等值与一般匹配同时使用

代码如下:

location = /{
   root /var/www/html/;
   index index.htm index.html;
}

location / {
    root   html;
    index  index.html index.htm;
}

上述配置后访问:http://localhost/,注意其它location配置先不要写,以免影响结果。

所得到的访问文件是:/nginx/html/index.htm 或者 /nginx/html/index.html ;

  • 过程分析:

先进行等值匹配,因为访问的url是一个“/”,是个目录,所以nginx内部会发送一次请求,访问:http://localhost/index.htm (若访问不到,会访问第二个文件index.html);

内部访问不会再走这个已经匹配了的等值location,会访问默认目录,在默认目录 /nginx/html 下查找 index.htm文件;

参考文章

nginx官网server配置:https://www.nginx.com/resources/wiki/start/topics/examples/server_blocks/#a-default-catch-all-server-block

© 著作权归作者所有

开心的哈士奇
粉丝 14
博文 46
码字总数 86764
作品 0
海淀
程序员
私信 提问
Tinywan/lua-nginx-redis

在线文档(Online documentation) 目录 Nginx 教程 (Nginx tutorial) Nginx编译安装 Nginx.conf详解和配置 Location 详解和配置 Nginx基础知识 Nginx高性能WEB服务器详解 Nginx高并发系统...

Tinywan
2018/01/07
0
0
nginx的反向代理模块 参数proxy_pass,proxy_method,proxy_hide_

nginx的反向代理模块有很多种配置,下面介绍一些常用的配置实例: 1.proxy_pass 语法:proxy_pass URL 配置块:location,if 详解:此配置项将当前请求反向代理到URL参数指定的服务器上,URL...

adbug
2016/02/24
861
0
CentOS 7.4 Tengine安装配置详解(二)

三、配置虚拟主机: 1、配置基于端口的虚拟主机: (1)在http{}配置段中新增如下server: server { listen 8000; server_name localhost; access_log /usr/local/tengine/logs/localhost800...

Marion0728
2018/05/14
0
0
CentOS 7.4 Tengine安装配置详解(四)

十三、将请求的URL基于正则表达式进行rewrite重写 使用Tengine提供的全局变量或自定义变量,结合正则表达式和标志位实现URL重写以及重定向,通常可以实现http跳转至https、域名1跳转至域名2...

Marion0728
2018/05/28
0
0
Nginx安装及配置文件 nginx.conf 详解

首先确保安装了 gcc openssl-devel pcre-devel 和 zlib-devel 等软件,其实主要是为了安装 Nginx 期间的编译等,如果不安装,出错的时候,按照提示一个一个安装也可以。 Linux 编译安装: 具...

小马_wolf
2016/09/13
18
0

没有更多内容

加载失败,请刷新页面

加载更多

IT兄弟连 Java语法教程 编写Java源代码

现在我们来一步一步的编写第一个Java程序,鼎鼎大名的“HelloWorld”。 编写Java源代码 编写Java源代码可以使用任何无格式的文本编辑器,在Windows操作系统上可以使用记事本、Edit Plus等程序...

老码农的一亩三分地
9分钟前
1
0
JavaScript箭头函数中的this详解

前言 箭头函数极大地简化了this的取值规则。 普通函数与箭头函数 普通函数指的是用function定义的函数: var hello = function () {console.log("Hello, Fundebug!");} 箭头函数指的是用...

开元中国2015
20分钟前
2
0
ETL测试工具简介

ETL测试 ETL测试过程与其他测试过程类似,包括一些阶段。 确定业务需求 测试计划 设计测试用例和测试数据 测试执行和错误报告 总结报告 测试结束 ETL测试的类型 生产验证测试: 也称为表平衡...

python测试开发人工智能安全
32分钟前
1
0
OSChina 周四乱弹 —— 不能空腹吃早餐

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @for_ :#今日歌曲推荐# 很好听的钢琴曲,节奏简单,有一点伤感。分享Fabrizio Paterlini的单曲《Veloma》: 《Veloma》- Fabrizio Paterlini ...

小小编辑
今天
1K
12
探讨android更新UI的几种方法

作为IT新手,总以为只要有时间,有精力,什么东西都能做出来。这种念头我也有过,但很快就熄灭了,因为现实是残酷的,就算一开始的时间和精力非常充足,也会随着项目的推进而逐步消磨殆尽。我...

天王盖地虎626
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部