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处理http请求实现过程解析
Mar 31 Servers
nginx反向代理时如何保持长连接
Mar 31 Servers
Apache Calcite 实现方言转换的代码
Apr 24 Servers
Nginx配置https的实现
Nov 27 Servers
Nginx设置HTTPS的方法步骤 443证书配置方法
Mar 21 Servers
CentOS下安装Jenkins的完整步骤
Apr 07 Servers
Nginx配置根据url参数重定向
Apr 11 Servers
zabbix配置nginx监控的实现
May 25 Servers
使用Nginx+Tomcat实现负载均衡的全过程
May 30 Servers
详解ZABBIX监控ESXI主机的问题
Jun 21 Servers
设置IIS Express并发数
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
神族 Protoss 剧情介绍
2020/03/14 星际争霸
咖啡的传说和历史
2021/03/03 新手入门
LotusPhp笔记之:Cookie组件的使用详解
2013/05/06 PHP
ThinkPHP令牌验证实例
2014/06/18 PHP
PHP 根据key 给二维数组分组
2016/12/09 PHP
PHP常用正则表达式精选(推荐)
2019/05/28 PHP
for 循环性能比较 提高for循环的效率
2009/03/19 Javascript
利用JS重写Cognos右键菜单的实现代码
2010/04/11 Javascript
JavaScript 构造函数 面相对象学习必备知识
2010/06/09 Javascript
JS实现控制表格内指定单元格内容对齐的方法
2015/03/30 Javascript
javascript显式类型转换实例分析
2015/04/25 Javascript
JavaScript中几种排序算法的简单实现
2015/07/29 Javascript
jQuery制作全屏宽度固定高度轮播图(实例讲解)
2017/07/08 jQuery
实例讲解JavaScript截取字符串
2018/11/30 Javascript
vue-cli2.0转3.0之项目搭建的详细步骤
2018/12/11 Javascript
js实现图片推拉门效果代码实例
2019/05/18 Javascript
Python打造出适合自己的定制化Eclipse IDE
2016/03/02 Python
浅谈python和C语言混编的几种方式(推荐)
2017/09/27 Python
python 实现对数据集的归一化的方法(0-1之间)
2018/07/17 Python
Python 打印中文字符的三种方法
2018/08/14 Python
python处理DICOM并计算三维模型体积
2019/02/26 Python
python中for循环变量作用域及用法详解
2019/11/05 Python
在jupyter notebook中调用.ipynb文件方式
2020/04/14 Python
python virtualenv虚拟环境配置与使用教程详解
2020/07/13 Python
美国专营婴幼儿用品的购物网站:buybuy BABY
2017/01/01 全球购物
英国绿色商店:Natural Collection
2019/05/03 全球购物
公益广告语集锦
2014/03/13 职场文书
市场开发与营销专业求职信范文
2014/05/01 职场文书
总经理岗位职责说明书
2014/07/30 职场文书
机关职员工作检讨书
2014/10/23 职场文书
道德模范事迹材料
2014/12/20 职场文书
质检员工作总结2015
2015/04/25 职场文书
小学六年级毕业感言
2015/07/30 职场文书
家长会感言
2015/08/01 职场文书
演讲开头怎么书写?
2019/08/06 职场文书
VUE中的v-if与v-show区别介绍
2022/03/13 Vue.js