详解nginx location指令


Posted in Servers onJanuary 18, 2022

location 介绍 location是Nginx中的块级指令(block directive),,location指令的功能是用来匹配不同的url请求,进而对请求做不同的处理和响应,这其中较难理解的是多个location的匹配顺序,本文会作为重点来解释和说明。 开始之前先明确一些约定,我们输入的网址叫做请求URI,nginx用请求URI与location中配置的URI做匹配。

Nginx的HTTP配置主要包括三个区块,结构如下:
http { //这个是协议级别
  include mime.types;
  default_type application/octet-stream;
  keepalive_timeout 65;
  gzip on;
    server { //这个是服务器级别
      listen 80;
      server_name localhost;
        location / { //这个是请求级别
          root html;
          index index.html index.htm;
        }
      }
}

location区段

通过指定模式来与客户端请求的URI相匹配,基本语法如下:location [=|~|~*|^~|@] pattern{……}

1、没有修饰符 表示:必须以指定模式开始,如:

server {
  server_name baidu.com;
  location /abc {
    ……
  }
}
那么,如下是对的:http://baidu.com/abchttp://baidu.com/abc?p1http://baidu.com/abc/http://baidu.com/abcde

那么,如下是对的:
http://baidu.com/abc
http://baidu.com/abc?p1
http://baidu.com/abc/
http://baidu.com/abcde

2、=表示:必须与指定的模式精确匹配

server {
server_name sish
  location = /abc {
    ……
  }
}
那么,如下是对的:
http://baidu.com/abc
http://baidu.com/abc?p1
如下是错的:
http://baidu.com/abc/
http://baidu.com/abcde

3、~ 表示:指定的正则表达式要区分大小写

server {
server_name baidu.com;
  location ~ ^/abc$ {
    ……
  }
}
那么,如下是对的:
http://baidu.com/abc
http://baidu.com/abc?p1=11&p2=22
如下是错的:
http://baidu.com/ABC
http://baidu.com/abc/
http://baidu.com/abcde

4、~* 表示:指定的正则表达式不区分大小写

server {
server_name baidu.com;
location ~* ^/abc$ {
    ……
  }
}
那么,如下是对的:
http://baidu.com/abc
http://baidu..com/ABC
http://baidu..com/abc?p1=11&p2=22
如下是错的:
http://baidu..com/abc/
http://baidu..com/abcde

5、^~ 类似于无修饰符的行为,也是以指定模式开始,不同的是,如果模式匹配,
那么就停止搜索其他模式了。
6、@ :定义命名location区段,这些区段客户段不能访问,只可以由内部产生的请
求来访问,如try_files或error_page等

查找顺序和优先级
1:带有“=“的精确匹配优先
2:没有修饰符的精确匹配
3:正则表达式按照他们在配置文件中定义的顺序
4:带有“^~”修饰符的,开头匹配
5:带有“~” 或“~*” 修饰符的,如果正则表达式与URI匹配
6:没有修饰符的,如果指定字符串与URI开头匹配

Location区段匹配示例location = / {
  # 只匹配 / 的查询.
  [ configuration A ]
}
location / {
  # 匹配任何以 / 开始的查询,但是正则表达式与一些较长的字符串将被首先匹配。
  [ configuration B ]
}
location ^~ /images/ {
  # 匹配任何以 /images/ 开始的查询并且停止搜索,不检查正则表达式。
  [ configuration C ]
}
location ~* \.(gif|jpg|jpeg)$ {
  # 匹配任何以gif, jpg, or jpeg结尾的文件,但是所有 /images/ 目录的请求将在Configuration C中处
  理。
  [ configuration D ]
} 各
请求的处理如下例:
■/ → configuration A
■/documents/document.html → configuration B
■/images/1.gif → configuration C
■/documents/1.jpg → configuration D

root 、alias指令区别

location /img/ {
    alias /var/www/image/;
}

#若按照上述配置的话,则访问/img/目录里面的文件时,ningx会自动去/var/www/image/目录找文件

location /img/ {
    root /var/www/image;
}

alias是一个目录别名的定义,root则是最上层目录的定义。

还有一个重要的区别是alias后面必须要用“/”结束,否则会找不到文件的。。。而root则可有可无~~

到此这篇关于nginx location指令详解的文章就介绍到这了,更多相关nginx location指令内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Servers 相关文章推荐
nginx优化的六点方法
Mar 31 Servers
nginx配置proxy_pass中url末尾带/与不带/的区别详解
Mar 31 Servers
Nginx工作原理和优化总结。
Apr 02 Servers
nginx反向代理配置去除前缀案例教程
Jul 26 Servers
Nginx源码编译安装过程记录
Nov 17 Servers
Nginx+Windows搭建域名访问环境的操作方法
Mar 17 Servers
Nginx实现会话保持的两种方式
Mar 18 Servers
为Centos安装指定版本的Docker
Apr 01 Servers
Windows server 2012搭建FTP服务器
Apr 29 Servers
nginx rewrite功能使用场景分析
May 30 Servers
解决Vmware虚拟机安装centos8报错“Section %Packages Does Not End With %End. Pane Is Dead”
Jun 01 Servers
nginx sticky实现基于cookie负载均衡示例详解
Dec 24 Servers
图文详解nginx日志切割的实现
Jan 18 #Servers
Nginx防盗链与服务优化配置的全过程
Jan 18 #Servers
使用 Apache 反向代理的设置技巧
NGINX 权限控制文件预览和下载的实现原理
Nginx虚拟主机的搭建的实现步骤
Jan 18 #Servers
Nginx下SSL证书安装部署步骤介绍
Dec 06 #Servers
教你快速构建一个基于nginx的web集群项目
Nov 27 #Servers
You might like
漂亮但不安全的CTB
2006/10/09 PHP
php检测useragent版本示例
2014/03/24 PHP
php浏览历史记录的方法
2015/03/10 PHP
input 高级限制级用法
2009/03/26 Javascript
28个JS验证函数收集
2010/03/02 Javascript
禁止ajax缓存获取程序最新数据的方法
2013/11/19 Javascript
jquery基础教程之数组使用详解
2014/03/10 Javascript
常用jQuery代码分享
2015/07/14 Javascript
javascript运动效果实例总结(放大缩小、滑动淡入、滚动)
2016/01/08 Javascript
javascript+css3 实现动态按钮菜单特效
2016/02/06 Javascript
从重置input file标签中看jQuery的 .val() 和 .attr(“value”) 区别
2016/06/12 Javascript
Bootstrap CSS组件之导航条(navbar)
2016/12/17 Javascript
深入理解JavaScript创建对象的多种方式以及优缺点
2017/06/01 Javascript
JavaScript字符串_动力节点Java学院整理
2017/06/27 Javascript
Angular4开发解决跨域问题详解
2017/08/28 Javascript
Angular4自制一个市县二级联动组件示例
2017/11/21 Javascript
教你如何用node连接redis的示例代码
2018/07/12 Javascript
微信小程序网络封装(简单高效)
2018/08/06 Javascript
vue动态绑定class选中当前列表变色的方法示例
2018/12/19 Javascript
Vue实现图片与文字混输效果
2019/12/04 Javascript
iSlider手机端图片滑动切换插件使用详解
2019/12/24 Javascript
js模拟实现烟花特效
2020/03/10 Javascript
vue 获取元素额外生成的data-v-xxx操作
2020/09/09 Javascript
python登录QQ邮箱发信的实现代码
2013/02/10 Python
Django中反向生成models.py的实例讲解
2018/05/30 Python
pandas 强制类型转换 df.astype实例
2020/04/09 Python
python tkinter实现连连看游戏
2020/11/16 Python
解决python3.6用cx_Oracle库连接Oracle的问题
2020/12/07 Python
英国最大的香水商店:The Fragrance Shop
2018/07/06 全球购物
企业管理培训感言
2014/01/27 职场文书
查摆剖析材料范文
2014/09/30 职场文书
仓管员岗位职责范本
2015/04/01 职场文书
社区文明创建工作总结2015
2015/04/21 职场文书
团队执行力培训心得体会
2015/08/15 职场文书
2019年描写人生经典诗句大全
2019/07/08 职场文书
win10电脑双屏显示一个黑屏怎么办?win10电脑双屏显示一个黑屏解决方法
2022/07/15 数码科技