Nginx location 与 Rewrite

Nginx正则表达式

location  

通过前缀或正则匹配用户的URL访问路径做页面跳转、访问控制和代理转发

location 大致可以分为三类:


精准匹配:location = / {...}
一般匹配:location / {...} 
正则匹配:location ~ / {...}

location 常用的匹配规则:


= :进行普通字符精确匹配,也就是完全匹配。
^~ :表示普通字符匹配。使用前缀匹配。如果匹配成功,则不再匹配其它 正则匹配location。
~ :区分大小写的匹配。
~* :不区分大小写的匹配。
!~ :区分大小写的匹配取非。
!~* :不区分大小写的匹配取非。

location匹配机制:


优先级:精准匹配 =  >  最长前缀匹配 ^~  >  正则匹配 ~ ~* !~ !~*  >  一般前缀匹配 /XXXX  >  通用匹配 /

在没有合适的精准匹配的情况下,先看前缀匹配的长度,取最长匹配的location(如果此最长匹配是带有^~的则不再看正则匹配;如果此最长匹配是不带有^~的则会继续再看正则匹配)

前缀匹配看长度,最长的优先匹配;正则匹配看上下顺序,根据nginx配置文件的配置由上往下依次匹配,匹配到即停止

网站匹配规则

#网站首页匹配
location = / {
    root 网页根目录;
    index index.html;
}

#网站静态页面,通过前缀匹配或通用匹配在nginx服务器本地处理
location ~ /static/ {
    root 目录;
}

location / {
    root 目录;
}

#网站动态页面,通过匹配不同的动态网页文件后缀转发给不同的后端应用服务器处理
location \.php$ {
    fastcgi_pass PHP服务器地址:端口;
}

location \.jsp$ {
    proxy_pass TOMCAT服务器地址:端口;
}
 


rewrite  

对用户的URL访问路径进行重写,再重定向跳转访问重写后的路径

rewrite格式


rewrite  正则表达式  重写的地址  [标记位];
                                   last  break  permanent  redirect

###flag标记说明###


last :本条规则匹配完成后,不终止重写后的url匹配,一般用在 server 和 if 中。
break :本条规则匹配完成即终止,终止重写后的url匹配,一般使用在 location 中。
redirect :返回302临时重定向,浏览器地址会显示跳转后的URL地址。
permanent :返回301永久重定向,浏览器地址栏会显示跳转后的URL地址。

rewrite默认情况下只对从域名后面的根目录 / 开始到传递参数的 ? 号前面的URL路径进行重写
rewrite 正则表达式 /新URL;                    http://域名/旧URL  ->  http://域名/新URL             #默认只对域名后面的URL部分重写
rewrite 正则表达式 http://新域名/新URL;       http://旧域名/旧URL  ->  http://新域名/新URL;        #如果需要全域名路径重写需要加上协议和域名

http://域名/旧URL  --rewrite重写-->  http://域名/新URL -->  location匹配新URL路径跳转页面


rewrite 正则表达式 /新URL  permanent;     #重写后会修改浏览器里的地址栏再重新访问

http://域名/旧URL  --rewrite重写-->  http://域名/新URL --> 浏览器地址栏也会改为 http://域名/新URL 再发起一次访问请求 -->  location匹配新URL路径跳转页面


location ~ URL路径正则表达式 {
    rewrite  正则表达式  重写的地址  [标记位];
}
    
    $request_uri
if ($uri ~ URL路径正则表达式) {
    rewrite  正则表达式  重写的地址  [标记位];
}

rewrite示例

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

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

相关文章

ctfshow解题,知识点学习

1.easy_zip(misc) 1)打开环境后是一个压缩包,解压里面有个flag.txt文件需要密码, 2)直接用工具爆破,即可找到密码 2.easy_eval 1)进入题目环境,先进行代码审计 首先说是…

常用CSS样式及属性代码

常用CSS样式及属性代码 前言1.常用css样式1.1. 背景属性:background1.2. 字体属性:font1.3. 边框属性:Border1.4. 盒子属性:Box1.5. 列表属性:List-style1.6. 定位属性:Position1.7. 区块属性:B…

springboot整合mongodb如何通过事务保障数据的完整性

在Spring Boot中整合MongoDB并利用事务来保障数据的完整性与一致性,主要是通过Spring Data MongoDB和MongoDB自身的事务支持来实现的。以下是详细的步骤和说明: 1. 确保MongoDB版本和支持 确保你的MongoDB服务器版本在4.0及以上,因为MongoD…

让你的博客实现负载均衡

零、缘起 有时候博客突然挂了,发现服务器厂商出了问题,很忧伤,我正在写着或查阅自家博客那种不可xx的内容。这时想着,如果这个博客有负载均衡就好了,空了想着实现下。 一分钟了解负载均衡的一切 选择第二种【反向代…

python_04

37、列表推导式 # 作用:快速生成列表 # 列表变量名 [x for x in range(开始值,结束值,步长) if 条件] # 注意:左闭右开 list1 [i for i in range(0,100)] print(list1) # list1 [i for i in range(0,100)] # print(list1)list…

MoE 大模型的前世今生

节前,我们星球组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、参加社招和校招面试的同学。 针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。 合集&#x…

Vue3整合Tailwindcss之padding样式类

04 常用基础样式 padding 样式类 什么是内边距 基础样式 ClassPropertiesp-0padding: 0px;px-0padding-left: 0px; padding-right: 0px;py-0padding-top: 0px; padding-bottom: 0px;ps-0padding-inline-start: 0px;pe-0padding-inline-end: 0px;pt-0padding-top: 0px;pr-0pa…

kafka-生产者监听器(SpringBoot整合Kafka)

文章目录 1、生产者监听器1.1、创建生产者监听器1.2、发送消息测试1.3、使用Java代码创建主题分区副本1.4、application.yml配置----v1版1.5、屏蔽 kafka debug 日志 logback.xml1.6、引入spring-kafka依赖1.7、控制台日志 1、生产者监听器 1.1、创建生产者监听器 package co…

图片批量纵向拼接神器:轻松插入间隔像素,生成真彩绚丽长图,让你的创意无限延伸!

在数字艺术的世界里,图片拼接早已不再是简单的组合,而是创意与技术的融合。如果你正在寻找一款能够快速将图片进行纵向拼接,并且能轻松插入间隔像素,同时保证色彩绚丽的神器,那么,我们首助编辑高手的长图拼…

如何实现单例模式及不同实现方法分析-设计模式

这是 一道面试常考题:(经常会在面试中让手写一下) 什么是单例模式 【问什么是单例模式时,不要答非所问,给出单例模式有两种类型之类的回答,要围绕单例模式的定义去展开。】 单例模式是指在内存中只会创建…

React 中的 ForwardRef的使用

React 中的 forwardRef Hooks 是指将子组件的 Dom 节点暴露给给父组件,在 React 中如果想要访问 Dom 节点是通过 useRef 这个 hooks,而 forwardHook 在 useRef 做了扩展。useRef 是当前组件中间中的节点,而 forwardRef 相当于做了一层封装将父…

springAOP 使用aop代替SqlsessionUtil业务层操作

在Maven框架pom配置文件中导入spring相关依赖&#xff1a; <dependencies><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.33</version></dependency><dependency…

【前端每日基础】day36——vue组件的通信方式

在Vue.js中&#xff0c;组件通信是一个重要的概念&#xff0c;它允许组件之间进行数据传递和事件处理。Vue.js提供了多种方式来实现组件之间的通信&#xff0c;适用于不同的场景和需求。以下是Vue组件通信的几种常见方式及其详细介绍&#xff1a; 父子组件通信 父组件向子组件…

6、资产评估专家指引第9号—数据资产评估

本专家指引是一种专家建议。评估机构执行资产评估业务,可以参照本专家指引,也可以根据具体情况采用其他适当的做法。中国资产评估协会将根据业务发展,对本专家指引进行更新。 第一章 引言 第一条 针对数据资产特点,结合目前实际操作中的部分难点和要点,中国资产评估协会…

mac配置Personal Access Tokens

背景 在macbook环境中&#xff0c;使用idea、android studio、xcode时&#xff0c;使用gitlab需要登录&#xff0c;而直接使用文明密码是不允许登录的&#xff0c;这时就需要换种方式&#xff0c;这里有两种&#xff1a;ssh、Access Tokens&#xff0c;在公用电脑上推荐使用Ac…

第一个SpringBoot项目

目录 &#x1f4ad;1、新建New Project IDEA2023版本创建Sping项目只能勾选17和21&#xff0c;却无法使用Java8&#xff1f;&#x1f31f; 2、下载JDK 17&#x1f31f; &#x1f4ad;2、项目创建成功界面 1、目录 &#x1f31f; 2、pom文件&#x1f31f; &#x1f4ad;3、…

前K个高频元素-力扣

本题想到的解法是使用哈希表首先统计数组中每个元素出现的次数&#xff0c;然后对出现次数进行排序&#xff0c;最后进行输出。看了题解学习到使用优先级队列 小顶堆来完成&#xff0c;小顶堆的排序规则由自己来定义。 代码如下&#xff1a; class Solution { public:class My…

ctfshow 年CTF web

除夕 Notice: Undefined index: year in /var/www/html/index.php on line 16 <?phpinclude "flag.php";$year $_GET[year];if($year2022 && $year1!2023){echo $flag; }else{highlight_file(__FILE__); } 弱比较绕过很简单&#xff0c;连函数都没有直…

代码随想录算法训练营Day59 | 503.下一个更大元素II 42. 接雨水

代码随想录算法训练营Day59 | 503.下一个更大元素II 42. 接雨水 LeetCode 503.下一个更大元素II 题目链接&#xff1a;LeetCode 503.下一个更大元素II 思路&#xff1a; class Solution { public:vector<int> nextGreaterElements(vector<int>& nums) {// …

【数据分享】中国民政统计年鉴(1949-2022)

大家好&#xff01;今天我要向大家介绍一份重要的中国民政统计数据资源——《中国民政统计年鉴》。这份年鉴涵盖了从1949年到2022年中国民政统计全面数据&#xff0c;并提供限时免费下载。&#xff08;无需分享朋友圈即可获取&#xff09; 数据介绍 从1949年到2022年&#xf…