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 相关文章推荐
Centos7.7 64位利用本地完整安装包安装lnmp/lamp套件教程
Mar 09 Servers
apache基于端口创建虚拟主机的示例
Apr 22 Servers
使用nginx配置访问wgcloud的方法
Jun 26 Servers
解决使用了nginx获取IP地址都是127.0.0.1 的问题
Sep 25 Servers
Nginx性能优化之Gzip压缩设置详解(最大程度提高页面打开速度)
Feb 12 Servers
Nginx禁止ip访问或非法域名访问
Apr 07 Servers
docker-compose部署Yapi的方法
Apr 08 Servers
搭建Yolov5服务器
Apr 30 Servers
详解ZABBIX监控ESXI主机的问题
Jun 21 Servers
nginx之内存池的实现
Jun 28 Servers
windows系统搭建WEB服务器详细教程
Aug 05 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
php数组函数序列之array_push() 数组尾部添加一个或多个元素(入栈),返回新长度。
2011/11/07 PHP
2014年最新推荐的10款 PHP 开发框架
2014/08/01 PHP
PHP处理CSV表格文件的常用操作方法总结
2016/07/01 PHP
javascript日期转换 时间戳转日期格式
2011/11/05 Javascript
jQuery 全选/反选以及单击行改变背景色实例
2013/07/02 Javascript
图标线性回归斜着移动到指定的位置
2013/08/16 Javascript
document节点对象的获取方式示例介绍
2013/12/24 Javascript
js 获取、清空input type="file"的值示例代码
2014/02/19 Javascript
JavaScript知识点总结之如何提高性能
2016/01/15 Javascript
JavaScript学习小结之被嫌弃的eval函数和with语句实例详解
2016/08/01 Javascript
基于vue2的table分页组件实现方法
2017/03/20 Javascript
教你快速搭建Node.Js服务器的方法教程
2017/03/30 Javascript
Vue2.0父组件与子组件之间的事件发射与接收实例代码
2017/09/19 Javascript
详解如何用VUE写一个多用模态框组件模版
2018/09/27 Javascript
echarts多条折线图动态分层的实现方法
2019/05/24 Javascript
在vue-cli 3中给stylus、sass样式传入共享的全局变量
2019/08/12 Javascript
node获取客户端ip功能简单示例
2019/08/24 Javascript
小程序调用微信支付的方法
2019/09/26 Javascript
Vue发布订阅模式实现过程图解
2020/04/30 Javascript
js实现带有动画的返回顶部
2020/08/09 Javascript
[03:59]5分钟带你了解什么是DOTA2(第二期)
2017/02/07 DOTA
Python中map,reduce,filter和sorted函数的使用方法
2015/08/17 Python
python添加模块搜索路径方法
2017/09/11 Python
Python简单I/O操作示例
2019/03/18 Python
Python创建一个元素都为0的列表实例
2019/11/28 Python
Pycharm中import torch报错的快速解决方法
2020/03/05 Python
Wedgwood英国官方网站:英式精致骨瓷餐具、礼品与生活精品,源于1759年
2019/09/02 全球购物
Linux中如何用命令创建目录
2015/01/12 面试题
机械专业应届生求职信
2013/12/12 职场文书
房地产还款计划书
2014/01/10 职场文书
研讨会主持词
2014/04/02 职场文书
入党积极分子评语
2014/05/04 职场文书
升学宴学生答谢词
2015/01/05 职场文书
护理实习生带教计划
2015/01/16 职场文书
孟佩杰观后感
2015/06/17 职场文书
在Java中Collection的一些常用方法总结
2021/06/13 Java/Android