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 工作原理
Mar 31 Servers
教你利用Nginx 服务搭建子域环境提升二维地图加载性能的步骤
Sep 25 Servers
Nginx 路由转发和反向代理location配置实现
Nov 11 Servers
苹果M1芯片安装nginx 并且部署vue项目步骤详解
Nov 20 Servers
Apache Pulsar集群搭建部署详细过程
Feb 12 Servers
Apache Linkis 中间件架构及快速安装步骤
Mar 16 Servers
阿里云日志过滤器配置日志服务
Apr 09 Servers
Windows server 2012搭建FTP服务器
Apr 29 Servers
项目中Nginx多级代理是如何获取客户端的真实IP地址
May 30 Servers
教你nginx跳转配置的四种方式
Jul 07 Servers
彻底卸载VMware虚拟机的超详细步骤记录
Jul 15 Servers
Nginx报404错误的详细解决方法
Jul 23 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
如何做到多笔资料的同步
2006/10/09 PHP
php获得文件扩展名三法
2006/11/25 PHP
php获取YouTube视频信息的方法
2015/02/11 PHP
Laravel 5 学习笔记
2015/03/06 PHP
PHP单元测试框架PHPUnit用法详解
2019/01/23 PHP
PHP使用openssl扩展实现加解密方法示例
2020/02/20 PHP
PhpStorm连接服务器并实现自动上传功能
2020/12/09 PHP
JavaScript对象、属性、事件手册集合方便查询
2010/07/04 Javascript
javascript中的一些注意事项 更新中
2010/12/06 Javascript
JavaScript var声明变量背后的原理示例解析
2013/10/12 Javascript
js二维数组定义和初始化的三种方法总结
2014/03/03 Javascript
jQuery实现响应鼠标背景变化的动态菜单效果代码
2015/08/27 Javascript
javascript中闭包概念与用法深入理解
2016/12/15 Javascript
详解nodejs中的process进程
2017/03/19 NodeJs
JavaScript中如何判断一个值的类型
2017/09/15 Javascript
Windows下Node.js安装及环境配置方法
2017/09/18 Javascript
使用js实现单链解决前端队列问题的方法
2020/02/03 Javascript
Python中的Numeric包和Numarray包使用教程
2015/04/13 Python
全面了解python中的类,对象,方法,属性
2016/09/11 Python
Python中跳台阶、变态跳台阶与矩形覆盖问题的解决方法
2018/05/19 Python
Python编程深度学习绘图库之matplotlib
2018/12/28 Python
Django基础知识 web框架的本质详解
2019/07/18 Python
用Python将Excel数据导入到SQL Server的例子
2019/08/24 Python
Python爬虫爬取百度搜索内容代码实例
2020/06/05 Python
详解Python流程控制语句
2020/10/28 Python
python中count函数知识点浅析
2020/12/17 Python
咖啡店的创业计划书,让你hold不住
2014/01/03 职场文书
放飞梦想演讲稿
2014/05/05 职场文书
高三霸气励志标语
2014/06/24 职场文书
学校门卫岗位职责范本
2014/06/30 职场文书
关于十八大的演讲稿
2014/09/15 职场文书
社区领导班子四风问题原因分析及整改措施
2014/09/28 职场文书
敬老院志愿者活动总结
2015/05/06 职场文书
2015年药品销售工作总结范文
2015/05/25 职场文书
mysql下的max_allowed_packet参数设置详解
2022/02/12 MySQL
SQL Server中T-SQL标识符介绍与无排序生成序号的方法
2022/05/25 SQL Server