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 相关文章推荐
使用Apache的rewrite
Mar 09 Servers
Nginx的rewrite模块详解
Mar 31 Servers
Linux安装Nginx步骤详解
Mar 31 Servers
nginx搭建图片服务器的过程详解(root和alias的区别)
Mar 31 Servers
Nginx本地目录映射实现代码实例
Mar 31 Servers
使用nginx配置访问wgcloud的方法
Jun 26 Servers
使用goaccess分析nginx日志的详细方法
Jul 09 Servers
详解Nginx 被动检查服务器的存活状态
Oct 16 Servers
Vscode中SSH插件如何远程连接Linux
May 02 Servers
Nginx本地配置SSL访问的实例教程
May 30 Servers
解决Vmware虚拟机安装centos8报错“Section %Packages Does Not End With %End. Pane Is Dead”
Jun 01 Servers
Linux中文件的基本属性介绍
Jun 01 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
探讨方法的重写(覆载)详解
2013/06/08 PHP
PHP的一个完美GIF等比缩放类,附带去除缩放黑背景
2014/04/01 PHP
对比分析php中Cookie与Session的异同
2016/02/19 PHP
CI框架文件上传类及图像处理类用法分析
2016/05/18 PHP
Yii框架中用response保存cookie,用request读取cookie的原理解析
2019/09/04 PHP
Laravel基础-关于引入公共文件的两种方式
2019/10/18 PHP
Laravel5.1 框架表单验证操作实例详解
2020/01/07 PHP
javascript的对话框详解与参数
2007/03/08 Javascript
JavaScript版TAB选项卡效果实例
2013/08/16 Javascript
jquery垂直公告滚动实现代码
2013/12/08 Javascript
JQuery EasyUI 加载两次url的原因分析及解决方案
2014/08/18 Javascript
jQuery中even选择器的定义和用法
2014/12/23 Javascript
HTML5+setCutomValidity()函数验证表单实例分享
2015/04/24 Javascript
Javascript中arguments和arguments.callee的区别浅析
2015/04/24 Javascript
javascript中innerText和innerHTML属性用法实例分析
2015/05/13 Javascript
图解JavaScript中的this关键字
2020/05/28 Javascript
JS表格组件神器bootstrap table详解(基础版)
2015/12/08 Javascript
引用jquery框架后出错的解决方法
2016/08/09 Javascript
js输入框使用正则表达式校验输入内容的实例
2017/02/12 Javascript
高性能的javascript之加载顺序与执行原理篇
2018/01/14 Javascript
Vue.use源码学习小结
2018/06/20 Javascript
浅谈关于JS下大批量异步任务按顺序执行解决方案一点思考
2019/01/08 Javascript
使用jQuery mobile NuGet让你的网站在移动设备上同样精彩
2019/06/18 jQuery
请求时token过期自动刷新token操作
2020/09/11 Javascript
Python中使用MELIAE分析程序内存占用实例
2015/02/18 Python
用Python实现协同过滤的教程
2015/04/08 Python
python3实现短网址和数字相互转换的方法
2015/04/28 Python
Python 中的with关键字使用详解
2016/09/11 Python
python:动态路由的Flask程序代码
2019/11/22 Python
python自动化发送邮件实例讲解
2021/01/04 Python
CSS3 Columns分列式布局方法简介
2014/05/03 HTML / CSS
小程序canvas中文字设置居中锚点
2019/04/16 HTML / CSS
JAVA中的关键字有什么特点
2014/03/07 面试题
涪陵白鹤梁导游词
2015/02/09 职场文书
新闻稿怎么写
2015/07/18 职场文书
新兵入伍决心书
2015/09/22 职场文书