详解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常用命令放入shell脚本详解
Mar 31 Servers
Nginx中break与last的区别详析
Mar 31 Servers
Nginx 过滤静态资源文件的访问日志的实现
Mar 31 Servers
图文详解Nginx版本平滑升级方案
Sep 15 Servers
nginx共享内存的机制详解
Mar 21 Servers
阿里云日志过滤器配置日志服务
Apr 09 Servers
Ubuntu安装Mysql+启用远程连接的完整过程
Jun 21 Servers
Nginx报错104:Connection reset by peer问题的解决及分析
Jul 23 Servers
Windows7下FTP搭建图文教程
Aug 05 Servers
教你使用RustDesk 搭建一个自己的远程桌面中继服务器
Aug 14 Servers
Nginx如何配置多个服务域名解析共用80端口详解
Sep 23 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
PHP使用imagick扩展实现合并图像的方法
2017/04/25 PHP
Laravel 5.4.36中session没有保存成功问题的解决
2018/02/19 PHP
php记录搜索引擎爬行记录的实现代码
2018/03/02 PHP
PHP实现的用户注册表单验证功能简单示例
2019/02/25 PHP
用 Javascript 验证表单(form)中的单选(radio)值
2009/09/08 Javascript
php跨域调用json的例子
2013/11/13 Javascript
JavaScript中对象属性的添加和删除示例
2014/05/12 Javascript
JS中如何判断传过来的JSON数据中是否存在某字段
2014/08/18 Javascript
js显示文本框提示文字的方法
2015/05/07 Javascript
javascript从定义到执行 你不知道的那些事
2016/01/04 Javascript
基于JQuery实现图片轮播效果(焦点图)
2016/02/02 Javascript
Javascript 链式作用域详细介绍
2017/02/23 Javascript
微信小程序实现跑马灯效果完整代码(附效果图)
2018/05/30 Javascript
深入解读Node.js中的koa源码
2019/06/17 Javascript
vue中在vuex的actions中请求数据实例
2019/11/08 Javascript
JavaScript 绘制饼图的示例
2021/02/19 Javascript
[07:40]DOTA2每周TOP10 精彩击杀集锦vol.4
2014/06/25 DOTA
[02:01]大师之路——DOTA2完美大师赛11月论剑上海
2017/11/06 DOTA
[55:44]OG vs NAVI 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Python实现的简单万年历例子分享
2014/04/25 Python
Python编程中使用Pillow来处理图像的基础教程
2015/11/20 Python
python pandas 组内排序、单组排序、标号的实例
2018/04/12 Python
python解析含有重复key的json方法
2019/01/22 Python
Python简单基础小程序的实例代码
2019/04/28 Python
余弦相似性计算及python代码实现过程解析
2019/09/18 Python
在pytorch中实现只让指定变量向后传播梯度
2020/02/29 Python
python 链接sqlserver 写接口实例
2020/03/11 Python
Django实现图片上传功能步骤解析
2020/04/22 Python
Python通过zookeeper实现分布式服务代码解析
2020/07/22 Python
锐步美国官方网站:Reebok美国
2018/01/10 全球购物
英语专业学子个人的自我评价
2013/10/02 职场文书
小学语文业务学习材料
2014/06/02 职场文书
小学教师读书活动总结
2014/07/08 职场文书
整改落实自查报告
2014/11/05 职场文书
2015年安全教育月活动总结
2015/03/26 职场文书
《勇者辞职不干了》ED主题曲无字幕动画MV公开
2022/04/13 日漫