详解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配置文件详解以及优化建议指南
Sep 15 Servers
详解使用内网穿透工具Ngrok代理本地服务
Mar 31 Servers
Mac电脑OS系统下安装Nginx的详细教程
Apr 14 Servers
配置nginx负载均衡
May 06 Servers
阿里云国际版 使用Nginx作为HTTPS转发代理服务器
May 11 Servers
聊聊配置 Nginx 访问与错误日志的问题
May 25 Servers
讨论nginx location 顺序问题
May 30 Servers
nginx设置资源请求目录的方式详解
May 30 Servers
详解apache编译安装httpd-2.4.54及三种风格的init程序特点和区别
Jul 15 Servers
Nginx如何限制IP访问只允许特定域名访问
Jul 23 Servers
Nginx如何配置根据路径转发详解
Jul 23 Servers
Win10系统搭建ftp文件服务器详细教程
Aug 05 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生成自己的LOG文件
2006/10/09 PHP
PHP实时显示输出
2008/10/02 PHP
php语言流程控制中的主动与被动
2012/11/05 PHP
php中Y2K38的漏洞解决方法实例分析
2014/09/22 PHP
php实现字符串首字母转换成大写的方法
2015/03/17 PHP
WordPress中登陆后关闭登陆页面及设置用户不可见栏目
2015/12/31 PHP
PHP用FTP类上传文件视频等的简单实现方法
2016/09/23 PHP
Yii2框架类自动加载机制实例分析
2018/05/02 PHP
JavaScript CSS修改学习第六章 拖拽
2010/02/19 Javascript
JavaScript 函数惰性载入的实现及其优点介绍
2013/08/12 Javascript
js中定义一个变量并判断其是否为空的方法
2014/05/13 Javascript
jQuery获取选中内容及设置元素属性的方法
2014/07/09 Javascript
jQuery的几个我们必须了解的特点
2015/05/03 Javascript
JavaScript设计模式经典之命令模式
2016/02/24 Javascript
div中文字内容溢出常见的解决方法
2017/03/16 Javascript
Vue.js实现模拟微信朋友圈开发demo
2017/04/20 Javascript
vue中七牛插件使用的实例代码
2017/07/28 Javascript
详解es6超好用的语法糖Decorator
2018/08/01 Javascript
简单使用webpack打包文件的实现
2019/10/29 Javascript
swiper实现导航滚动效果
2020/12/13 Javascript
[02:55]DOTA2英雄基础教程 发条技师
2013/12/04 DOTA
[03:56]还原FTP电影首映式 DOTA2群星拼出遗迹世界
2014/03/26 DOTA
[05:49]DOTA2-DPC中国联赛 正赛 Elephant vs LBZS 选手采访
2021/03/11 DOTA
python实现人脸识别代码
2017/11/08 Python
tensorflow 利用expand_dims和squeeze扩展和压缩tensor维度方式
2020/02/07 Python
python3+opencv 使用灰度直方图来判断图片的亮暗操作
2020/06/02 Python
彪马法国官网:PUMA法国
2019/12/15 全球购物
一些Solaris面试题
2015/12/22 面试题
什么是Remote Module
2016/06/10 面试题
大学生最常用的自我评价
2013/12/07 职场文书
家长评语和期望
2014/02/10 职场文书
财政专业求职信范文
2014/02/19 职场文书
2014年大学生工作总结
2014/11/20 职场文书
违纪检讨书
2015/01/27 职场文书
物业客服专员岗位职责
2015/04/07 职场文书
仓库管理制度范本
2015/08/04 职场文书