详解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 比 Apache 更牛逼
Mar 31 Servers
Nginx+Tomcat实现负载均衡、动静分离的原理解析
Mar 31 Servers
nginx proxy_cache 缓存配置详解
Mar 31 Servers
如何在centos上使用yum安装rabbitmq-server
Mar 31 Servers
Windows下用Nginx配置https服务器及反向代理的问题
Sep 25 Servers
CKAD认证中部署k8s并配置Calico插件
Mar 31 Servers
Nginx反向代理、重定向
Apr 13 Servers
Tomcat项目启动失败的原因和解决办法
Apr 20 Servers
Nginx 安装SSL证书完成HTTPS部署
Apr 28 Servers
Linux磁盘管理方法介绍
Jun 01 Servers
Win Server2016远程桌面如何允许多用户同时登录
Jun 10 Servers
阿里云服务器(windows)手动部署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 面向对象 PHP5 中的常量
2010/05/05 PHP
PHP数据类型之布尔型的介绍
2013/04/28 PHP
php中file_get_content 和curl以及fopen 效率分析
2014/09/19 PHP
php实现四舍五入的方法小结
2015/03/03 PHP
微信支付开发维权通知实例
2016/07/12 PHP
php读取XML的常见方法实例总结
2017/04/25 PHP
PHP4和PHP5版本下解析XML文档的操作方法实例分析
2017/05/20 PHP
SyntaxHighlighter代码加色使用方法
2008/09/07 Javascript
js中使用DOM复制(克隆)指定节点名数据到新的XML文件中的代码
2011/07/27 Javascript
解析DHTML,JavaScript,DOM,BOM以及WEB标准的描述
2013/06/19 Javascript
Angularjs实现带查找筛选功能的select下拉框示例代码
2016/10/04 Javascript
你不知道的 javascript【推荐】
2017/01/08 Javascript
JS实现带阴历的日历功能详解
2019/01/24 Javascript
Python使用scrapy采集数据时为每个请求随机分配user-agent的方法
2015/04/08 Python
使用Python的Tornado框架实现一个简单的WebQQ机器人
2015/04/24 Python
Django学习笔记之Class-Based-View
2017/02/15 Python
Django之路由层的实现
2019/09/09 Python
django框架ModelForm组件用法详解
2019/12/11 Python
Python2和Python3中@abstractmethod使用方法
2020/02/04 Python
5行Python代码实现图像分割的步骤详解
2020/05/25 Python
Alba Moda德国网上商店:意大利时尚女装销售
2016/11/14 全球购物
Godiva巧克力英国官网:比利时歌帝梵巧克力
2018/08/28 全球购物
CHARLES & KEITH澳大利亚官网:新加坡时尚品牌
2019/01/22 全球购物
罗马尼亚在线杂货店:Pilulka.ro
2019/09/28 全球购物
德国BA保镖药房中文网:Bodyguard Apotheke
2021/03/09 全球购物
几个数据库方面的面试题
2016/07/01 面试题
方正Java笔试题
2014/07/03 面试题
工商管理实习自我鉴定
2013/09/28 职场文书
安全协议书范本
2014/04/21 职场文书
团支书竞选演讲稿
2014/04/28 职场文书
微笑服务标语
2014/06/24 职场文书
重阳节演讲稿:尊敬帮助老人 弘扬传统美德
2014/09/25 职场文书
申报优秀教师材料
2014/12/16 职场文书
2015大学迎新标语
2015/07/16 职场文书
先进基层党组织主要事迹材料
2015/11/03 职场文书
解析laravel使用workerman用户交互、服务器交互
2021/04/28 PHP