当前位置: 首页 > news >正文

nginx访问路径匹配方法

目录

一:匹配方法

二:location使用:

三:rewrite使用


一:匹配方法

location和rewrite是两个用于处理请求的重要模块,它们都可以根据请求的路径进行匹配和处理。

二:location使用:

1:简单匹配
简单匹配是按照字面量路径来匹配请求的URL。这种匹配方法是最直接且最容易理解的。


location /images/ {  
    # 匹配任何以/images/开头的URL  
}


2:最长字符串匹配
当有多个location使用简单匹配时,Nginx会选择匹配路径最长的那个。


location / {  
    # 匹配所有URL,但优先级较低  
}  
location /images/ {  
    # 匹配以/images/开头的URL,优先级高于上面的location /  
}


3:正则表达式匹配
使用正则表达式可以定义更复杂的路径匹配规则。正则表达式匹配以~*(不区分大小写)或~(区分大小写)开始。


location ~* \.(gif|jpg|png)$ {  
    # 匹配所有以.gif、.jpg或.png结尾的URL,不区分大小写  
}
4:通配符匹配
Nginx不支持像Apache那样的通配符(如*),但可以使用正则表达式来达到类似的效果。然而,有时候提到的通配符匹配实际上是指正则表达式的使用。

5:精确匹配
使用=可以实现精确匹配,即完全匹配指定的路径。


location = /logo.png {  
    # 只匹配/logo.png这个URL  
}

6:匹配优先级
当存在多个可能匹配的location时,Nginx会按照一定的优先级顺序来选择一个进行处理。优先级从高到低大致如下:

精确匹配(=)具有最高优先级;
其次是按文件中的顺序匹配的正则表达式(~和~*),先被定义的先匹配;
然后是最长字符串匹配;
最后是匹配任意路径的location /。


7:命名位置
虽然这不是一种路径匹配方法,但值得一提的是,你可以使用@符号创建命名的location,这些位置不能直接由客户端请求访问,但可以在内部重定向或作为其他指令的目标。


location / {  
    try_files $uri $uri/ @custom;  
}  
location @custom {  
    # 这里是自定义错误页面或其他处理逻辑  
}
 

三:rewrite使用

1:正则表达式匹配:
rewrite模块支持使用正则表达式进行匹配和替换。正则表达式可以用来描述复杂的匹配模式,并实现精确的URL重写。


rewrite ^/oldpath(.*)$ /newpath$1 permanent;


2:位置匹配:
rewrite模块也支持基于请求的URL位置进行匹配和重写。可以使用location块中定义的匹配规则来指导rewrite操作。


location = /oldpage {  
    rewrite ^ /newpage;  
}


3:替换参数
在重写URL时,可以使用替换参数来修改URL中的某些部分。例如,使用$1到$9来表示正则表达式中的捕获组,并替换到新的URL中。


rewrite ^/(.*)/(.*)$ /profile.php?user=$1&id=$2 last;


4:重定向
使用rewrite模块可以将请求重定向到其他URL。通过指定重定向的目标URL,可以将用户请求转发到其他服务器或地址。
rewrite ^/oldurl$ /newurl redirect;


5:临时重定向
使用last关键字可以将重定向标记为临时重定向,这意味着浏览器会收到一个临时的响应,并自动重新发起新的请求到目标URL。


rewrite ^/oldurl$ /newurl last;


6:永久重定向
使用permanent关键字可以将重定向标记为永久重定向,这意味着浏览器会收到一个永久的响应,并记住新的URL,以后直接访问旧的URL时会直接跳转到新的URL。
rewrite ^/oldurl$ /newurl permanent;
 

相关文章:

nginx访问路径匹配方法

目录 一:匹配方法 二:location使用: 三:rewrite使用 一:匹配方法 location和rewrite是两个用于处理请求的重要模块,它们都可以根据请求的路径进行匹配和处理。 二:location使用: 1:简单匹配…...

偌依 项目部署及上线步骤

准备实验环境,准备3台机器 1.作为前端服务器,mysql,redis服务器--同时临时作为代码打包服务器 192.168.2.65 nginx-server 2.作为后端服务器 192.168.2.66 java-server-1 192.168.2.67 java-server-2 安装nginx/mysql #安装nginx [rootweb-nginx ~]…...

PHP特性知识点扫盲 - 上篇

概述 之前在分析thinkphp源码的时候,对依赖注入等等php高级的特性一直想做一个梳理和总结,一直没有时间,好不容易抽一点时间对技术的盲点做一个扫盲和总结。 特性 1.命名空间 命名空间是在PHP5.3中引入,是一个很重要的工具&am…...

Docker一键极速安装Nacos,并配置数据库!

1 部署方式 1.1 DockerHub javaedgeJavaEdgedeMac-mini ~ % docker run --name nacos \ -e MODEstandalone \ -e JVM_XMS128m \ -e JVM_XMX128m \ -e JVM_XMN64m \ -e JVM_MS64m \ -e JVM_MMS64m \ -p 8848:8848 \ -d nacos/nacos-server:v2.2.3 a624c64a1a25ad2d15908a67316d…...

交换机04_远程连接

通过远程管理方式连接交换机 1、telnet简介 telnet 是应用层协议 基于传输层TCP协议的,默认端口:23 采用的是明文密码方式 不是很安全,一般用于内网管理。 2、ssh协议简介 ssh 是应用层的协议,基于传输层的TCP协议&#x…...

ES6定义一个类(函数内部定义属性,,原型定义方法 ), 实现继承?

ES6中使用class关键字定义一个类,使用extends关键字实现继承。下面是一个示例: class Animal {constructor(name) {this.name name;}sayHello() {console.log(Hello, my name is ${this.name});} }class Dog extends Animal {constructor(name, breed)…...

使用 Process Explorer 和 Windbg 排查软件线程堵塞案例分享

目录 1、问题说明 2、线程堵塞的可能原因分析 3、使用Windbg和Process Explorer确定线程中发生了死循环 4、根据Windbg中显示的函数调用堆栈去查看源码,找到问题 4.1、在Windbg定位发生死循环的函数的方法 4.2、在Windbg中查看变量的值去辅助分析 4.3、是循环…...

“智慧”千里眼助力水泵站

泵站是为水提供势能和压能,解决无自流条件下的排灌、供水和水资源调配问题的唯一动力来源,在工农业用水、防洪、排涝和抗旱减灾等方面发挥着重要作用。一旦出现异常,对经济生产将造成难以估量的损失,给水利安全管理造成负担。因此…...

C++多态性——(5)运算符重载(第二节)

归纳编程学习的感悟, 记录奋斗路上的点滴, 希望能帮到一样刻苦的你! 如有不足欢迎指正! 共同学习交流! 🌎欢迎各位→点赞 👍 收藏⭐ 留言​📝 身先才能率人,律己才能服人…...

ES -极客学习

Elasticsearch 简介及其发展历史 起源 Lucene 于 Java 语言开发的搜索引擎库类创建于 1999 年,2005 年成为 Apache 顶级开源项目Lucene 具有高性能、易扩展的优点Lucene 的局限性 只能基于 Java 语言开发类库的接口学习曲线陡峭原生并不支持水平扩展原生并不支持水…...

【大厂秘籍】系列 - Java多线程面试题

Java多线程面试题 友情提示,看完此文,在Java多线程这块,基本上可以吊打面试官了 线程和进程的区别 进程是资源分配的最小单位,线程是CPU调度的最小单位 线程是进程的子集,一个进程可以有很多线程,每条线…...

vue实现画笔回放,canvas转视频播放功能

示例图&#xff1a; 一、vue2版本 <template><div class"canvas-video"><canvasref"myCanvasByVideo"class"myCanvas"id"myCanvasByVideo":width"width":height"height"></canvas><d…...

Docker中镜像的相关操作

1.辅助操作 docker version&#xff1a;用查看docker客户端引擎和server端引擎版本信息。 docker info&#xff1a;用来查看docker引擎的详细信息。 docker --help&#xff1a;用来查看帮助信息。 2.镜像Image docker images&#xff1a;查看当前本地仓库中存在哪些镜像。 …...

[python]python利用pyaudio录制系统声音没有立体声混音怎么录制系统音频

当电脑没有立体声混音导致Python写代码无法使用pyaudio进行录制系统声音怎么办&#xff1f;查阅资料和安装驱动等方法都不行&#xff0c;难道没办法了吗&#xff1f;那为什么电脑其他软件可以做到呢&#xff1f;因此研究了一下pyaudio在没有立体声混音情况下确实无法录制声音&a…...

使用echarts的bmap配置项绘制区域轮廓遮罩

示例图 代码 <template><div id"map" style"width: 100%; height: 100vh"></div> </template><script> import * as echarts from "echarts"; import "echarts/extension/bmap/bmap"; export default…...

第3章 【课后习题】(完整版)

【3.18】写出下面程序的运行结果 //3.18写出下面程序的运行结果 #include <iostream> using namespace std; class test{public:test();~test() {};private:int i; }; test::test() {i25;for(int ctr0;ctr<10;ctr){cout<<"Counting at "<<ctr…...

redis安装与配置

目录 1. 切换到 root 用户 2. 搜索安装包 3. 安装 redis 4. 查看 redis 是否正常存在 5. 修改ip 6. 重新启动服务器 7. 连接服务器 1. 切换到 root 用户 通过 su 命令切换到 root 用户。 2. 搜索安装包 apt search redis 这里安装的是下面的版本&#xff1a; 3. 安装 …...

kotlin first/last/indexOf/elementAt

kotlin 中 first 是取集合元素中第一个元素 last 是取集合元素中最后一个元素 indexOf 根据元素寻找下标&#xff0c;默认是第一个 elementAt 根据下标找元素 下面写一个demo 说明下他们几个的使用 val list listOf("A", "D", "A", "…...

计算机网络——网络中要解决的问题

1. 从网络管理的角度看 1.1 配置管理 追踪所有部署的硬件和软件资源&#xff0c;包括设备配置和软件版本。 1.2 故障管理​​​​​ 监控设备的运行状态&#xff0c;以确保所有组件都正常工作&#xff0c;以及快速响应和修复任何故障。 1.3 计费管理 监控资源消耗并进行计费…...

初识STL

目录 ​&#x1f4a1;STL &#x1f4a1;STL六大组件 &#x1f4a1;三大组件介绍 &#x1f4a1;容器 &#x1f4a1;算法 &#x1f4a1;迭代器 &#x1f4a1;示例 &#x1f4a1;STL C STL&#xff08;标准模板库&#xff09;是一套功能强大的 C 模板类&#xff0c;提供了…...

你还在用自然语言写MJ提示词?专业级结构化提示词已进入Token级编排时代:详解::权重、--no冲突域、[]嵌套层级与多模态对齐原理

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;自然语言提示词的局限性与结构化范式跃迁 传统自然语言提示&#xff08;Prompt&#xff09;虽具备易用性和低门槛优势&#xff0c;但在复杂任务中暴露出显著瓶颈&#xff1a;语义模糊性、上下文敏感性弱…...

2026届最火的AI科研神器横评

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 人工智能生成内容&#xff0c;也就是AIGC&#xff0c;它的广泛运用带来了效率的提升&#x…...

LabVIEW触发采集实战:从原理到多通道同步实现

1. 项目概述&#xff1a;为什么我们需要触发采集&#xff1f;在数据采集领域&#xff0c;尤其是自动化测试、设备监控和信号分析等场景&#xff0c;我们常常会遇到一个核心痛点&#xff1a;如何精准地捕捉到我们真正关心的那一段信号&#xff1f;想象一下&#xff0c;你正在监测…...

告别烦人黑窗口!QT Creator控制台程序输出完美嵌入IDE的两种方法

告别烦人黑窗口&#xff01;QT Creator控制台程序输出完美嵌入IDE的两种方法 每次调试QT控制台程序时&#xff0c;那个突然弹出的黑窗口是否总让你手指悬停在AltTab键上&#xff1f;作为深耕QT开发多年的技术顾问&#xff0c;我见过太多开发者被这个"窗口刺客"打断思…...

BilibiliDown终极指南:3步轻松下载B站高清视频与音频

BilibiliDown终极指南&#xff1a;3步轻松下载B站高清视频与音频 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader &#x1f633; 项目地址: https://gitcode.com/gh_mirrors/bi…...

AP的全称是什么?

AP 的全称是 Access Point。 中文常叫 无线接入点 或 无线 AP&#xff0c;一般指 Wi‑Fi 路由器 / 热点 里负责 让手机、笔记本、POS 等无线接入局域网 的那一部分&#xff08;有时也整台设备被口语叫成 AP&#xff09;。 在你们文档里 「Connect the LAN port … to an AP r…...

远程办公总掉线?四大远控软件横测:谁才是“不断连之王”?

远程办公总掉线&#xff1f;四大远控软件横测&#xff1a;谁才是“不断连之王”&#xff1f; 远程办公最怕 “关键时刻掉链子”&#xff1a;写方案写到一半断连、远程运维突然掉线、跨城开会画面卡死…… 连接稳定性早已成为远控软件的核心生命线。本次横测聚焦ToDesk、向日葵、…...

基于RT-Thread与HMI-BOARD的直线推杆智能测试系统设计与实现

1. 项目概述与核心价值在工业自动化领域&#xff0c;直线推杆作为一种常见的执行机构&#xff0c;广泛应用于医疗床、升降桌、工业阀门、农业机械等设备中。一个推杆从设计图纸到批量生产&#xff0c;中间有一个至关重要的环节&#xff1a;寿命与可靠性测试。传统的测试方案&am…...

利用CircuitPython内置传感器实现CPU温度监控与本地日志记录

1. 项目概述&#xff1a;从芯片温度到数据洞察 在嵌入式项目里&#xff0c;给设备“把脉”是基本功。CPU温度&#xff0c;这个看似简单的数据点&#xff0c;其实是窥探硬件运行状态的绝佳窗口。它不仅能告诉你芯片是不是在“发烧”&#xff0c;更能间接反映环境变化、负载情况&…...

Flyway实战:从零到一构建数据库版本管理流水线

1. 为什么你的项目需要Flyway 第一次接触数据库版本管理这个概念时&#xff0c;我正面临一个典型的开发困境&#xff1a;团队里有5个开发人员在同时修改数据库结构&#xff0c;每次发布新版本都像在玩俄罗斯轮盘赌——永远不知道谁会忘记执行哪个SQL脚本。直到生产环境出现数据…...