Nginx实践:(2) Nginx语法之localtion
1. 概念
location是根据uri进行不同的定位。在虚拟主机的配置中,是必不可少的。location可以将网站的不同部分,定位到不同的处理方式上。
location语法格式如下:
location [=|~|~*|^~] patt{
}
其中:
(1) 当[]中的内容均不填写时,表示一般匹配
(2) "="表示精准匹配
(3) "~"表示正则匹配
2. 精确匹配
当uri匹配时,首先检测是否存在精准匹配,如果存在,则停止匹配过程。
例1:
// 如果$uri==patt,则匹配成功,使用config A
location = patt {
config A
}
例2:
location = / {
root /var/www/html/;
index index.htm index.html;
}
location / {
root /usr/local/nginx/html;
index index.html index.htm;
}
如果访问http://ip:port/,则其定位流程是:a) 精准匹配" = /",得到index页为index.htm; b) 再次访问/index.htm,此次内部跳转已经是"/index.htm"(一般匹配),其根目录为/usr/local/nginx/html; c) 最终结果,访问了/usr/local/nginx/html/index.htm。
3. 正则匹配
location / {
root /usr/local/nginx/html;
index index.html index.htm;
}
location ~ image {
root /var/www/;
index index.html;
}
假设服务器存在/usr/local/nginx/html/image/1.jpg路径,当我们访问http://xx.com/image/1.jpg时,此时"/"与"/image/1,jpg"匹配,同时 "image"正则与"image/1.jpg"也能够匹配,二者谁会发挥作用?答案是二者均会起作用,但是最终起作用的是正则表达式,正则表达式会将之前匹配的覆盖掉,因此图片真正访问/var/www/image/1.jpg。
4. 一般匹配
location /{
root /usr/local/nginx/html;
index index.html index.htm;
}
location /foo {
root /var/www/html/;
index index.html;
}
当访问http://xxx.com/foo时,对于uri "/foo",两个location的patt都能匹配他们。即"/"能从左前缀匹配'/foo','/foo'也能左前缀匹配'/foo',此时真正访问的是'/var/www/html/index.html',原因是'/foo'匹配的更长,优先进行匹配。
5. location命中匹配过程
(1) 首先判断精准命中,如果命中,立即返回结果并结束解析过程
(2) 判断普通命中,如果有多个命中,"记录"下来"最长"的命中结果(注意:记录但不结束,最长的为准)
(3) 继续判断正则表达式的解析结果,按配置中的正则表达式顺序为准,由上到下开始匹配,一旦匹配成功一个,立即返回结果,并结束解析过程
延伸分析:a: 普通命中顺序无所谓,是因为按命中的长短来确定的 b: 正则命中,顺序有所谓,是因为从前往后命中的

Nginx实践:(2) Nginx语法之localtion的更多相关文章
- linux环境手动编译安装Nginx实践过程 附异常解决
1.下载nginx源码包并解压 可在http://nginx.org/en/download.html下载.tar.gz的源码包,如(nginx-1.4.7.tar.gz) 或者使用云盘下载 ht ...
- 运维实践-最新Nginx二进制构建编译lua-nginx-module动态链接Lua脚本访问Redis数据库读取静态资源隐式展现
关注「WeiyiGeek」公众号 设为「特别关注」每天带你玩转网络安全运维.应用开发.物联网IOT学习! 希望各位看友[关注.点赞.评论.收藏.投币],助力每一个梦想. 本章目录 目录 0x0n 前言 ...
- nginx配置文件结构,语法,配置命令解释
摘要: nginx的配置文件类似于一门优雅的编程语言,弄懂了它的规范就可以自定义配置文件了,这个很重要~ 1,结构分析 nginx配置文件中主要包括六块:main,events,http,server ...
- nginx目录及配置语法
一.Nginx安装目录 1.查看安装目录. 采用yum的方式安装,其实都是安装的一个一个的 pm 包,故可采用如下命令查看 rpm -ql nginx 遵循了 rpm 包管理规范. 2.安装目录详解 ...
- vim nginx配置文件时具备语法高亮功能
1.下载nginx.vim 下载页面:http://www.vim.org/scripts/script.php?script_id=1886 wget http://www.vim.org/scri ...
- Nginx实践01-ngnix编译安装-测试
1.下载nginx安装包 下载地址:http://nginx.org/en/download.html(里面有nginx各个版本) 解压到指定目录: 解压出来的目录简单介绍: src:软件的所有源代码 ...
- 【夯实Nginx基础】Nginx工作原理和优化、漏洞
本文地址 原文地址 本文提纲: 1. Nginx的模块与工作原理 2. Nginx的进程模型 3 . NginxFastCGI运行原理 3.1 什么是 FastCGI ...
- Nginx配置文件(nginx.conf)配置详解(2)
Nginx的配置文件nginx.conf配置详解如下: user nginx nginx ; Nginx用户及组:用户 组.window下不指定 worker_processes 8; 工作进程:数目 ...
- Nginx配置文件(nginx.conf)配置详解
Nginx的配置文件nginx.conf配置详解如下: user nginx nginx ; Nginx用户及组:用户 组.window下不指定 worker_processes 8; 工作进程:数目 ...
- nginx反向代理nginx,RealServer日志打印真实ip
title: nginx反向代理nginx,RealServer日志打印真实ip date: 2016-05-11 19:15:37 tags: --- nginx反向代理nginx,RealServ ...
随机推荐
- android studio中使用recyclerview小白篇(四)
经过努力,我们的recyclerview终于可以使用了,但是装配上真实的数据后,发现左边的内容太长了,如果超过一行,左边内容和右边的内容竟然重叠在一起了,好是让人心塞啊,如下图 后来发现设置左边tex ...
- C# 高斯消元项目运用
C# 高斯消元项目运用 最近项目涉及到一个需求,需要把指定数量的多个商品,混合装入到多个不同型号的箱子中(每种型号的箱子装入商品的种类和个数是固定的).这就涉及到解多元一次方程 针对多元一次方程一般用 ...
- MongoDB插入时间不正确的问题
关于mongodb插入时间不正确的问题 今天在给mongodb插入日期格式的数据时发现,日期时间相差8个小时,原来存储在mongodb中的时间是标准时间UTC +0:00,而中国的时区是+8.00 . ...
- libcurl坑
code = curl_easy_setopt(conn, CURLOPT_URL, ca.strUrl.c_str()); 要char* 不能string
- PHP7 - MongoDB Driver 使用心得
php7 只能使用Mongodb driver来驱动mongodb. 使用Mongodb Driver连接数据库 刚开始使用Mongodb Driver的时候我是拒绝的.查看官方文档只看到一排的类和不 ...
- Java面向对象之关键字this 入门实例
一.基础概念 1.关键字this是指:哪个对象调用this所在的函数.this就指向当前这个对象. 2.用法: (1).this关键字可以解决:构造函数私有化问题. 注意:构造函数只能被构造函数调用, ...
- .Generator与其他异步处理方案
1.Generator与其他异步处理方案 以前,异步编程的方法,大概有下面四种. 1.1 回调函数 JavaScript 语言对异步编程的实现,就是回调函数.所谓回调函数,就是把任务的第二段单独写在一 ...
- 一款给力的一键复制js插件-clipboard.js
一款没有依赖的.给力的一键复制的JS插件 点我前往github 案例demo见下载包内demo文件夹. 这里晒出最常用的几种方式,以供不时之需. <!DOCTYPE html> < ...
- javascript高级程序设计---js事件思维导图
绘制思维软件与平时用的笔记,以及导出功能,这三个问题综合起来,于是我把思维导图分开画 1.js事件的基本概念 2.js事件的事件处理程序 3.js事件的事件对象
- Joi图标
刚开始浏览API的时候,旁边这个图片还真没明白是啥意思.现在才明白过来:),检测工具嘛,哈哈.