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实现反向代理
Sep 20 Servers
nginx 设置多个站跨域
Mar 09 Servers
Nginx代理同域名前后端分离项目的完整步骤
Mar 31 Servers
图文详解nginx日志切割的实现
Jan 18 Servers
nginx常用配置conf的示例代码详解
Mar 21 Servers
Dashboard管理Kubernetes集群与API访问配置
Apr 01 Servers
Nginx动静分离配置实现与说明
Apr 07 Servers
Mac电脑OS系统下安装Nginx的详细教程
Apr 14 Servers
CentOS7安装MySQL8的超级详细教程(无坑!)
Jun 10 Servers
教你nginx跳转配置的四种方式
Jul 07 Servers
Nginx报404错误的详细解决方法
Jul 23 Servers
Docker容器harbor私有仓库部署和管理
Aug 05 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中使用redis队列操作实例代码
2013/02/07 PHP
PHP中基于ts与nts版本- vc6和vc9编译版本的区别详解
2013/04/26 PHP
学习php设计模式 php实现模板方法模式
2015/12/08 PHP
php+ajax简单实现全选删除的方法
2016/12/06 PHP
详解PHP中的 input属性(隐藏 只读 限制)
2017/08/14 PHP
accesskey 提交
2006/06/26 Javascript
jquery 选择器部分整理
2009/10/28 Javascript
该如何加载google-analytics(或其他第三方)的JS
2010/05/13 Javascript
JavaScript 原型继承之构造函数继承
2011/08/26 Javascript
多浏览器兼容性比较好的复制到剪贴板的js代码
2011/10/09 Javascript
javascript实现json页面分页实例代码
2014/02/20 Javascript
Javascript学习笔记之函数篇(四):arguments 对象
2014/11/23 Javascript
2014最热门的JavaScript代码高亮插件推荐
2014/11/25 Javascript
jQuery mobile在页面加载时添加加载中效果 document.ready 和window.onload执行顺序比较
2016/07/14 Javascript
JS实现的适合做faq或menu滑动效果示例
2016/11/17 Javascript
JS设计模式之命令模式概念与用法分析
2018/02/06 Javascript
详解VUE 对element-ui中的ElTableColumn扩展
2018/03/28 Javascript
JS复杂判断的更优雅写法代码详解
2018/11/07 Javascript
Vue数据驱动表单渲染,轻松搞定form表单
2019/07/19 Javascript
vue打开新窗口并实现传参的图文实例
2021/03/04 Vue.js
python实现人人网登录示例分享
2014/01/19 Python
简单介绍Python中的try和finally和with方法
2015/05/05 Python
详解Python文本操作相关模块
2017/06/22 Python
Python3 读取Word文件方式
2020/02/13 Python
Python利用for循环打印星号三角形的案例
2020/04/12 Python
多重CSS背景动画实现方法示例
2014/04/04 HTML / CSS
日本面向世界,国际级的免税在线购物商城:DOKODEMO
2017/02/01 全球购物
iHerb台湾:维生素、保健品和健康产品
2018/01/31 全球购物
SEPHORA丝芙兰捷克官网:购买香水、化妆品和护肤品
2018/11/26 全球购物
英国户外服装品牌:Craghoppers
2019/04/25 全球购物
中药学自荐信
2014/06/15 职场文书
2014年超市员工工作总结
2014/11/18 职场文书
员工自我工作评价
2015/03/06 职场文书
2015年医药代表工作总结
2015/04/25 职场文书
整理Python中常用的conda命令操作
2021/06/15 Python
python数字类型和占位符详情
2022/03/13 Python