详解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 09 Servers
JVM上高性能数据格式库包Apache Arrow入门和架构详解(Gkatziouras)
May 26 Servers
配置nginx 重定向到系统维护页面
Jun 08 Servers
使用nginx配置访问wgcloud的方法
Jun 26 Servers
使用kubeadm命令行工具创建kubernetes集群
Mar 31 Servers
iSCSI服务器CHAP双向认证配置
Apr 01 Servers
Nginx动静分离配置实现与说明
Apr 07 Servers
tomcat正常启动但网页却无法访问的几种解决方法
May 06 Servers
阿里云国际版 使用Nginx作为HTTPS转发代理服务器
May 11 Servers
永中文档在线转换预览基于nginx配置部署方案
Jun 10 Servers
Windows Server 2012 R2服务器安装与配置的完整步骤
Jul 15 Servers
修改Nginx配置返回指定content-type的方法
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简单实现生成txt文件到指定目录的方法
2016/04/25 PHP
详解ThinkPHP3.2.3验证码显示、刷新、校验
2016/12/29 PHP
php使用变量动态创建类的对象用法示例
2017/02/06 PHP
firefox中用javascript实现鼠标位置的定位
2007/06/17 Javascript
实现JavaScript中继承的三种方式
2009/10/16 Javascript
JS实现CheckBox复选框全选全不选功能
2015/05/06 Javascript
使用jQuery+EasyUI实现CheckBoxTree的级联选中特效
2015/12/06 Javascript
Node.js实用代码段之正确拼接Buffer
2016/03/17 Javascript
javaScript数组迭代方法详解
2016/04/14 Javascript
微信小程序 共用变量值的实现
2017/07/12 Javascript
浅谈express 中间件机制及实现原理
2017/08/31 Javascript
mac中利用NVM管理不同node版本的方法详解
2017/11/08 Javascript
微信小程序实现同一页面取值的方法分析
2019/04/30 Javascript
ckeditor一键排版功能实现方法分析
2020/02/06 Javascript
JS 数组和对象的深拷贝操作示例
2020/06/06 Javascript
[01:00:59]VP VS VG Supermajor小组赛胜者组第二轮 BO3第二场 6.2
2018/06/03 DOTA
python自动格式化json文件的方法
2015/03/11 Python
从CentOS安装完成到生成词云python的实例
2017/12/01 Python
Tensorflow使用支持向量机拟合线性回归
2018/09/07 Python
浅析python3字符串格式化format()函数的简单用法
2018/12/07 Python
python自定义时钟类、定时任务类
2021/02/22 Python
使用Fabric自动化部署Django项目的实现
2019/09/27 Python
详解Python实现进度条的4种方式
2020/01/15 Python
python实现图像拼接
2020/03/05 Python
JAVA及PYTHON质数计算代码对比解析
2020/06/10 Python
Python列表推导式实现代码实例
2020/09/09 Python
Html5实现如何在两个div元素之间拖放图像
2013/03/29 HTML / CSS
使用canvas生成含有微信头像的邀请海报没有微信头像问题
2019/10/29 HTML / CSS
美国现代家具购物网站:LexMod
2019/01/09 全球购物
客户代表实习人员自我鉴定
2013/09/27 职场文书
应届生法律顾问求职信
2013/11/19 职场文书
团员的自我评价
2013/12/01 职场文书
文秘人员工作职责
2014/01/31 职场文书
实习证明模板
2015/06/16 职场文书
Oracle11g r2 卸载干净重装的详细教程(亲测有效已重装过)
2021/06/04 Oracle
索尼ICF-36收音机评测
2022/04/30 无线电