nginx的优先级和匹配方式

news2025/3/13 21:36:26

Nginx的location的优先级和匹配方式:

在http模块当中有server,在server模块才有location,location匹配的是uri

/test

/image

在一个server当中有多个location,如何来确定匹配那个location

Nginx支持正则表达式:

^:字符串的起始位置

$:字符串的结束位置

*:匹配所有

?:匹配前面的字符0次或一次

.:任意单个字符

{n}:连续重复出现次

{n,m}:连续出现n-m次

  1. z0-9A-Z]

[c]:匹配单个字符c

():分组

|:或

Location匹配的分类:

Location /

Location -*

  1. 精确匹配location=/test{..}

要填完整的路径,一个字符都不能少,不能错

  1. 正则匹配location ~ / {}

Location ^~:前缀匹配,以什么为开头

-:区分大小写进行匹配

~*:不区分大小写匹配

!-:区分大小写取反匹配

!-*:不区分大小写取反匹配

  1. location /test {}

一般匹配

Location匹配成功,不在继续向下匹配

小实验:

ocation匹配分优先级:

精确匹配优先级最高,第二优先级是正则匹配,一般或通用匹配优先级最低

Location=完整路径>location^~>location~,~*>location /test > location /

工作当中配置location的原则是什么:(重要)

  1. 网首页:一律用精确匹配,网站首页一般都是一个静态页面内,一般都匹配网站的根工作目录 location= / {}
  2. 处理静态文件的请求:目录匹配和后缀匹配 location ^-/static {} 第二种方式用正则匹配location -*\. {html|jpg|jepg|gif|png}${}
  3. 一般规则:动态请求,把动态请求转发到后端的动态页面服务器

location / { proxy_pass http://tomcat.server}

Nginx的重定向:

Rewrite:结合了Nginx提供的全局变量和自定义的变量,结合正则表达式以及标志位实现url重写以及重 定向

Rewrite执行顺序:

  1. 先执行server块里面的rewrite
  2. 执行location里面定义的rewrite
  3. 选定location中的rewrite

Rewrite中可以支持if语句,但是不支持else语句

Rewrite语法:

Rewrite<regex><replacmnet>[flag]

<regex>:正则表达式

<replacmnet>:跳转的正则表达式

[flag]:标志位 “标记”

Flag:

Last:本条规则匹配完成后,继续向下匹配所有的location URI规则

Break:本条规则匹配完之后立即终止,页面内容变化,uri不变

Redirect:临时重定向302 uri的地址会发生变化

Permanent:永久重定向301 uri地址也会发生变化

rewrite /test/(.*) /ky32/$1 permanent;

.*:匹配所有

$1:表示捕获组$1引用正则表达式的第一个捕获组

www.ky32.com/test/index.html 1.jpg

www.ky32.com/ky32/index.html 1.jpg

搜索引擎的权重,永久重定向会加入搜索引擎的排名

临时不会加搜索引擎的权重

实验验证:

永久重定向

临时重定向

Break跳转,用的比较多,跳转的时候不会改变uri

Last:继续匹配

报错日志:

internal redirection cycle while processing

处理请求时发生了重写或者内部重定向循环,Nginx循环最多可以循环十次,超过十次会报错

解决方法:

总结:rewrite和location似乎两个都可跳转,但是区别在于rewrite是在同一域名之内更改获取资源的路径,location是对路径访问控制

三个实验:

  1. 基于域名的跳转

www.kgc.com但是公司业务变更,迁移到了新的域名www.benet.com代替,但是依旧不能被废除,访问kgc可以跳转到bennet,且匹配得分uri不能变

2.基于ip访问跳转

公司业务有一个新版本要上线了,用户访问网站统一显示固定的维护页面,只有公司的192.168.233.61可以访问,其他都是维护页面

真机无法访问:

基于目录下.php访问.php跳转到新的页面

随后做一个映射

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1103981.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PLC 学习day01 了解PLC 的组成和知识。

1.资料来源 链接&#xff1a;3.三菱PLC编程视频关于PLC工作原理的介绍_哔哩哔哩_bilibili 2. PLC 的知识 2.1 PLC 的概述及特点功能 PLC是可编程逻辑控制器&#xff08;Programmable Logic Controller&#xff09;的英文缩写&#xff0c;是融合了继电器控制功能和计算机运算功…

补体C3/C4(C3/C4)介绍

补体是一种血清蛋白质&#xff0c;存在于人和脊椎动物血清及组织液中&#xff0c;不耐热&#xff0c;活化后具有酶活性、可介导免疫应答和炎症反应。可被抗原-抗体复合物或微生物所激活&#xff0c;导致病原微生物裂解或被吞噬。可通过三条既独立又交叉的途径被激活&#xff0c…

DNS(二)

实现 Internet DNS 架构 架构图 实验环境 关闭SELinux、Firewalld。时间保持一致 主机名IP角色client192.168.28.146DNS客户端&#xff0c;DNS地址为192.168.28.145localdns192.168.28.145本地DNS服务器&#xff08;只缓存&#xff09;forward192.168.28.144转发目标DNS服务…

TARJAN复习 求强连通分量、割点、桥

TARJAN复习 求强连通分量、割点、桥 文章目录 TARJAN复习 求强连通分量、割点、桥强连通分量缩点桥割点 感觉之前写的不好&#xff0c; 再水一篇博客 强连通分量 “有向图强连通分量&#xff1a;在有向图G中&#xff0c;如果两个顶点vi,vj间&#xff08;vi>vj&#xff09;有…

【vue】vue实现海康ws协议的实时监控播放:

文章目录 一、效果图&#xff1a;二、实现过程&#xff1a;【1】官网下载h5player.js&#xff1a;【2】引入h5player.min.js&#xff1a;【3】使用&#xff1a; 一、效果图&#xff1a; 二、实现过程&#xff1a; 【1】官网下载h5player.js&#xff1a; 【H5视频播放器开发包】…

Linux shell编程学习笔记13:文件测试运算

Linux Shell 脚本编程和其他编程语言一样&#xff0c;支持算数、关系、布尔、逻辑、字符串、文件测试等多种运算。前面几节我们依次研究了 Linux shell编程 中的 字符串运算、算术运算、关系运算、布尔运算 和 逻辑运算&#xff0c;今天我们来研究 Linux shell编程中的文件测…

PowerShell批量修改DNS域名解析

批量添加DNS A记录 $dnsServerName"" # DNS服务器的服务器名称&#xff0c;如果是在DNS服务器本机执行则可留空 $containerName"test.com" # 域名的后缀也就是DNS Zone Name $mydns[WMIClass]"ROOT\MicrosoftDNS:MicrosoftDNS_resourceRecord"…

yarn : 无法加载文件 C:\Program Files\nodejs\yarn.ps1

问题描述&#xff1a; 问题分析&#xff1a; 这个错误提示说明在电脑系统上禁止运行 PowerShell 脚本&#xff0c;因此导致无法加载 Yarn 的安装脚本。这是由于系统的执行策略&#xff08;Execution Policies&#xff09;设置所导致的。 解决方法&#xff1a; 1. 以管理员身…

关于6轴球腕机械臂的肩部奇异描述纠正

对于常见的球腕6轴机械臂构型&#xff0c;在大多数资料中奇异点描述如下&#xff1a; 肩部奇异点&#xff08;Shoulder singularity&#xff09;&#xff1a; 肩部奇异点是在机器人手腕的中心与J1轴关节在同一条直线上时发生。这种情况下&#xff0c;会导致关节轴1和4试图瞬间旋…

【Java-框架-SpringMVC】(01) SpringMVC框架的简单创建与使用,快速上手 - 简易版

前言 【描述】 "SpringMVC"框架的简单创建与使用&#xff0c;快速上手&#xff1b; 【环境】 系统"Windows"&#xff0c;软件"IntelliJ IDEA 2021.1.3(Ultimate Edition)"&#xff1b;“Java版本"1.8.0_202”&#xff0c;“Spring"版…

【Machine Learning】02-Advanced Learning Algorithms

02-Advanced Learning Algorithms 2. Advanced Learning Algorithms2.1 Neural Network2.1.1 概述2.1.2 Neural network model2.1.3 TensorFlow的实现2.1.4 Neural network implementation in Python2.1.5 强人工智能&#xff08;AGI&#xff09; 2.2 Vectorization2.2.1 矩阵使…

Hadoop分布式文件系统-HDFS

1.介绍 HDFS (Hadoop Distributed File System)是 Hadoop 下的分布式文件系统,具有高容错、高吞吐量等特性,可以部署在低成本的硬件上。 2.HDFS 设计原理 2.1 HDFS 架构 HDFS 遵循主/从架构,由单个 NameNode(NN) 和多个 DataNode(DN) 组成:

keep-alive 是 Vue 的一个内置组件,用于缓存其他组件的实例,以避免重复渲染和销毁,它可以在需要频繁切换的组件之间提供性能优化

目录 keep-alive 使用 keep-alive 的示例代码&#xff1a; 手动清除组件缓存的示例代码&#xff1a; keep-alive 组件有以下几个优点&#xff1a; keep-alive 的原理&#xff1a; 使用 keep-alive 组件&#xff0c;你可以包裹需要缓存的组件&#xff0c;然后这些组件在切…

基于Springboot实现在线答疑平台系统项目【项目源码+论文说明】

基于Springboot实现在线答疑平台系统演示 摘要 社会的发展和科学技术的进步&#xff0c;互联网技术越来越受欢迎。网络计算机的生活方式逐渐受到广大师生的喜爱&#xff0c;也逐渐进入了每个学生的使用。互联网具有便利性&#xff0c;速度快&#xff0c;效率高&#xff0c;成本…

Brew包的基本安装(手把手教学)

大家在使用mac或者linux系统的过程中&#xff0c;大致了解Homebrew的用处&#xff0c;不多说直接进入正题 相信大家已经看到了Homebrew官网的安装介绍了&#xff0c;我们依然使用终端&#xff08;不去下载应用过于麻烦&#xff09; 一、开始安装 在按照官网安装时发现会安装失…

Linux常见基本指令合集及其效果展示

Linux基本命令 文章目录 Linux基本命令1. whoami2. who3. clear4. pwd5. 查看文件信息5.0 什么是文件5.1 ls5.2 ls -l5.3 ls -a5.4 ls -a -l 6. 补充知识&#xff1a;对于Linux系统目录的认知6.1 什么是路径 7. cd8. touch9. mkdir10. rmdir11. rm12. man13. cp14. mv15. nano1…

(Python) Python中三种时间格式的转换方法

1. 时间元组 1.1. 时间元组和时间戳的互相转化 import time,datetime # 获取当前时间的时间元组 t time.localtime() print(t) # 时间元组转时间戳 timestamp time.mktime(t) print(timestamp) # time.struct_time(tm_year2019, tm_mon10, tm_mday23, tm_hour23, tm_min15,…

clion 此文件不属于任何项目目标

如果你已经尝试了所有办法都不行&#xff0c;那就试试这个&#xff0c;不需要重启ide&#xff0c;啥都不用干。版本clion 2023.2.2

华为OD机考算法题:评论转换输出

题目部分 题目评论转换输出难度难题目说明在一个博客网站上&#xff0c;每篇博客都有评论。每一条评论都是一个非空英文字母字符串。评论具有树状结构&#xff0c;除了根评论外&#xff0c;每个评论都有一个父评论。当评论保存时&#xff0c;使用以下格式&#xff1a; 首先是评…

24届好未来数开笔试

目录 选择、多选SQL题目描述输入 目标解答解析 题目分享 选择、多选 Java, int x 1, float y 2, x/y 0.5 2. Hive 的数据结构 基本数据类型 复合数据类型 text 不是 Hive 内外表 建表时如果不显示声明表的类型为 外表 Kafka 通过&#xff08;&#xff09;避免任务重复执行…