nginx 配置指令之location使用详解


Posted in Servers onMay 25, 2022

Nginx是支持世界上所有网站三分之一的Web服务器。因为轻巧,模块化,用户友好的配置格式以强大的反向代理能力,Nginx迅速取代其他Web服务器成了互联网上最常用Web服务器之。作为一个门户和对外暴露的入口,Nginx也是Web服务在保障企业服务在性能和安全方面功不可没,虽然Nginx也暴露过一些漏洞(比如CVE-2013-4547,CVE-2017-7529,CVE-2018-16843/16844,CVE-2019-9516和CVE-2020-12440等),但是基本上都无法直接(难于)利用。但是没有漏洞,不等于不能被利用(同样有漏洞,不等于可以利用)。Nginx最大的安全问题并不是其安全漏洞,而是在运维上面,尤其是错误配置导致的问题。本文我们就介绍nginx 配置指令之location使用。

前言

location 指令是http模块中非常重要的配置指令之一,Location是Nginx中的块级指令(block directive),通过配置Location指令块,可以决定客户端发过来的请求URI如何处理(是映射到本地文件还是转发出去)及被哪个location处理

server { 
	listen 80; 
	server_name localhost; 
	location / { 
	}
	location /abc{
	}
	 ... 
 }

location

用来设置请求的 URI

nginx 配置指令之location使用详解

配置策略

  • uri变量是待匹配的请求字符串,可以不包含正则表达式,也可以包含正则表达式;
  • nginx服务器在搜索匹配location的时候,是先使用不包含正则表达式进行匹配,找到一个匹配度最高的一个,然后在通过包含正则表达式的进行匹配;
  • 如果能匹配到直接访问,匹配不到,就使用刚才匹配度最高的那个location来处理请求;

具体属性介绍

1、不带符号

要求必须以指定模式开始

server {
	listen 80;
	server_name 127.0.0.1;
	location /abc {
		default_type text/plain;
		return 200 "access success";
	}
}

在这种情况下,只要是以 /abc开头的都能被匹配到,以下访问都是正确的

http://IP/abc
http://IP/abc?p1=TOM
http://IP/abc/
http://IP/abcdef

nginx 配置指令之location使用详解

2、“= ”

= :用于不包含正则表达式的uri前,必须与指定的模式精确匹配

server {
	listen 80;
	server_name 127.0.0.1;
	location = /abc {
		default_type text/plain;
		return 200 "access success";
	}
}

在这种情况下,访问的路径必须是以 /abc开头才能正确被访问,如下是正常的,

nginx 配置指令之location使用详解

 但是如果换成其他的路径,就不对了

nginx 配置指令之location使用详解

3、“~ ”

  • ~ : 用于表示当前uri中包含了正则表达式,并且区分大小写 ~*: 用于表示当前uri中包含了正则表达式,并且不区分大小写;
  • 换句话说,如果uri包含了正则表达式,需要用上述两个符合来标识;

配置案例

server {
	listen 80;
	server_name 127.0.0.1;
	location ~^/abc\w$ {
		default_type text/plain;
		return 200 "access success";
	}
}
server {
	listen 80;
	server_name 127.0.0.1;
	location ~*^/abc\w$ {
		default_type text/plain;
		return 200 "access success";
	}
}

^~: 用于不包含正则表达式的 uri 前,功能和不加符号的一致,唯一不同的是,如果模式匹配,那么就停止搜索其他模式了。

到此这篇关于nginx 配置指令之location使用的文章就介绍到这了!


Tags in this post...

Servers 相关文章推荐
Nginx实现反向代理
Sep 20 Servers
nginx简单配置多个server的方法
Mar 31 Servers
利用Nginx代理如何解决前端跨域问题详析
Apr 02 Servers
nginx作grpc的反向代理踩坑总结
Jul 07 Servers
nginx配置虚拟主机的详细步骤
Jul 21 Servers
苹果M1芯片安装nginx 并且部署vue项目步骤详解
Nov 20 Servers
从零开始在Centos7上部署SpringBoot项目
Apr 07 Servers
nginx配置之并发频次限制
Apr 18 Servers
Tomcat项目启动失败的原因和解决办法
Apr 20 Servers
nginx 添加http_stub_status_module模块
May 25 Servers
使用 DataAnt 监控 Apache APISIX的原理解析
Jul 07 Servers
Valheim服务器 Mod修改安装教程 【ValheimPlus】
Dec 24 Servers
zabbix配置nginx监控的实现
May 25 #Servers
nginx 添加http_stub_status_module模块
May 25 #Servers
docker 制作mysql镜像并自动安装
May 20 #Servers
阿里云服务器Ubuntu 20.04上安装Odoo 15
May 20 #Servers
Apache SeaTunnel实现 非CDC数据抽取
May 20 #Servers
apache ftpserver搭建ftp服务器
May 20 #Servers
服务器间如何实现文件共享
May 20 #Servers
You might like
discuz7 phpMysql操作类
2009/06/21 PHP
解决PhpMyAdmin中导入2M以上大文件限制的方法分享
2014/06/06 PHP
PHP加密技术的简单实现
2016/09/04 PHP
PHP实现一个简单url路由功能实例
2016/11/05 PHP
Redis在Laravel项目中的应用实例详解
2017/08/11 PHP
PHP使用ActiveMQ实例
2018/02/05 PHP
Yii2框架控制器、路由、Url生成操作示例
2019/05/27 PHP
JavaScript 事件对象的实现
2009/07/13 Javascript
文本框中,回车键触发事件的js代码[多浏览器兼容]
2010/06/07 Javascript
jquery实现加载等待效果示例
2013/09/25 Javascript
JavaScript中的方法调用详细介绍
2014/12/30 Javascript
html的DOM中Event对象onblur事件用法实例
2015/01/21 Javascript
jQuery中的ready函数与window.onload谁先执行
2016/06/21 Javascript
ES6 Promise对象概念与用法分析
2017/04/01 Javascript
webpack+vue2构建vue项目骨架的方法
2018/01/09 Javascript
js变量值传到php过程详解 将php解析成数据
2019/06/26 Javascript
VScode格式化ESlint方法(最全最好用方法)
2019/09/10 Javascript
python标准算法实现数组全排列的方法
2015/03/17 Python
python操作redis的方法
2015/07/07 Python
Python实现Youku视频批量下载功能
2017/03/14 Python
Python3.5编程实现修改IIS WEB.CONFIG的方法示例
2017/08/18 Python
利用selenium 3.7和python3添加cookie模拟登陆的实现
2017/11/20 Python
Pycharm+Scrapy安装并且初始化项目的方法
2019/01/15 Python
Pandas0.25来了千万别错过这10大好用的新功能
2019/08/07 Python
关于PyTorch 自动求导机制详解
2019/08/18 Python
python函数局部变量、全局变量、递归知识点总结
2019/11/15 Python
python 普通克里金(Kriging)法的实现
2019/12/19 Python
python 中的[:-1]和[::-1]的具体使用
2020/02/13 Python
音频处理 windows10下python三方库librosa安装教程
2020/06/20 Python
Python使用Selenium实现淘宝抢单的流程分析
2020/06/23 Python
Delphi软件工程师试题
2013/01/29 面试题
《云雀的心愿》教学反思
2014/02/25 职场文书
双语教学实施方案
2014/03/23 职场文书
工作失误检讨书范文
2015/01/26 职场文书
2015年青年教师工作总结
2015/05/25 职场文书
2015年度女工工作总结
2015/10/22 职场文书