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
扩展多台相同的Web服务器
Apr 01 Servers
解决使用了nginx获取IP地址都是127.0.0.1 的问题
Sep 25 Servers
nginx从安装到配置详细说明(安装,安全配置,防盗链,动静分离,配置 HTTPS,性能优化)
Feb 12 Servers
Nginx设置HTTPS的方法步骤 443证书配置方法
Mar 21 Servers
Windows Server 2019 域控制器安装图文教程
Apr 28 Servers
详解如何使用Nginx解决跨域问题
May 06 Servers
利用nginx搭建RTMP视频点播、直播、HLS服务器
May 25 Servers
关于windows server 2012 DC 环境 重启后蓝屏代码:0xc00002e2的问题
May 25 Servers
centos环境下nginx高可用集群的搭建指南
Jul 23 Servers
Apache自带的ab压力测试工具的实现
Jul 23 Servers
ubuntu开机后ROS程序自启动问题
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
笑谈配置,使用Smarty技术
2007/01/04 PHP
关于UEditor编辑器远程图片上传失败的解决办法
2012/08/31 PHP
PHP处理JSON字符串key缺少双引号的解决方法
2014/09/16 PHP
php之readdir函数用法实例
2014/11/13 PHP
php实现的简单中文验证码功能示例
2017/01/03 PHP
yii2.0框架多模型操作示例【添加/修改/删除】
2020/04/13 PHP
PHP数组与字符串互相转换实例
2020/05/05 PHP
关于取不到由location.href提交而来的上级页面地址的解决办法
2009/07/30 Javascript
jquery DOM操作 基于命令改变页面
2010/05/06 Javascript
javascript中的五种基本数据类型
2015/08/26 Javascript
JS同步、异步、延迟加载的方法
2018/05/05 Javascript
微信小程序实现滴滴导航tab切换效果
2018/07/24 Javascript
在axios中使用params传参的时候传入数组的方法
2018/09/25 Javascript
Vue唯一可以更改vuex实例中state数据状态的属性对象Mutation的讲解
2019/01/18 Javascript
pm2启动ssr失败的解决方法
2019/06/29 Javascript
jquery实现弹窗(系统提示框)效果
2019/12/10 jQuery
[01:06:18]DOTA2-DPC中国联赛 正赛 Phoenix vs Dynasty BO3 第二场 1月26日
2021/03/11 DOTA
在CMD命令行中运行python脚本的方法
2018/05/12 Python
python递归函数绘制分形树的方法
2018/06/22 Python
对Python 两大环境管理神器 pyenv 和 virtualenv详解
2018/12/31 Python
python五子棋游戏的设计与实现
2019/06/18 Python
python如何实现代码检查
2019/06/28 Python
python将字符串转换成json的方法小结
2019/07/09 Python
Python装饰器使用你可能不知道的几种姿势
2019/10/25 Python
Python中如何引入第三方模块
2020/05/27 Python
python中reload重载实例用法
2020/12/15 Python
美国专营婴幼儿用品的购物网站:buybuy BABY
2017/01/01 全球购物
加拿大最大的相机店:Henry’s
2017/05/17 全球购物
怎么写好自荐信
2013/10/30 职场文书
党员公开承诺践诺书
2014/03/25 职场文书
工地质量标语
2014/06/12 职场文书
Go 语言结构实例分析
2021/07/04 Golang
JavaScript 定时器详情
2021/11/11 Javascript
DE1107机评
2022/04/05 无线电
详细介绍Java中的CyclicBarrier
2022/04/13 Java/Android
Windows server 2022创建创建林、域树、子域的步骤
2022/06/25 Servers