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

NGINX之location和rewrite

一.NGINX常用的正则表达式

二.Location

location作用:对访问的路径做访问控制或者代理转发

1.location 常用的匹配规则:

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

location 大致可以分为三类:
精准匹配:location = / {...}
一般匹配:location / {...}  一般匹配先匹配前缀匹配,最后在用通用匹配 
正则匹配:location ~ / {...}

2.location匹配机制:

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

意思:在没有精准匹配的情况下,先看最长的前缀匹配,取最长的前缀匹配,如果最长前缀匹配有^~则不继续看正则匹配了,如果最长前缀匹配没^~就要继续看正则匹配,匹配到及停止。

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

三.Rewrite

rewrite的作用是:对访问的域名或者域名内的URL路径地址重写
rewrite功能就是:使用nginx提供的全局变量或自己设置的变量,结合正则表达式和标记位实现URL重写以及重定向。
比如:更换域名后需要保持旧的域名能跳转到新的域名上、某网页发生改变需要跳转到新的页面、网站防盗链等等需求。

注意:rewrite只能放在server{},location{},if{}中,并且默认只能对域名后边的除去传递的参数外的字符串起作用,

例如 http://www.xy101.com/abc/bbs/index.php?a=1&b=2 只对/abc/bbs/index.php重写。

rewrite跳转实现:
Nginx:通过ngx_http_rewrite_module 模块支持URL重写、支持if条件判断,但不支持else
跳转:从一个 location跳转到另一个location,循环最多可以执行10次,超过后nginx将返回500错误

rewrite 执行顺序如下:

(1) 执行 server 块里面的 rewrite 指令。
(2) 执行 location 匹配。
(3) 执行选定的 location 中的 rewrite 指令。

rewrite的语法格式:

第一种:

rewrite <regex> <replacement> [flag];
regex :表示正则匹配规则。
replacement :表示跳转后的内容。
flag :表示 rewrite 支持的 flag 标记。

第二种:

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

flag标记说明:

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

案例:

1.将请求http://www.xy101.com/abc/123.html 跳转到首页http://www.xy101.com

location /abc/123.html {root /var/www/htmlrewrite ^/ http://www.xy101.com;
}

22

2.将请求http://www.xy101.com/abc/test.jpg 跳转到http://www.xy101.com/error.png

location /abc/test.jpg {root    /var/www/html;rewrite ^/ error.png permanent;  }

3

3.将请求http://www.xy102.com/discuz/index.php 跳转到http://www.xy101.com/discuz/index.php ,保证原域名后面的uri路径不变 

if ($host = 'www.xy102.com') {rewrite ^/(.*)$ http://www.xy101.com/$1 permanent;}

4.将请求http://discuz.xy101.com/index.php 的访问跳转到http://www.xy101.com/discuz/index.php ,保证原域名后面的uri路径不变。

if ($host = discuz.xy101.com){rewrite ^/(.*)$ http://www.xy101.com/discuz/$1 permanent;}


 5.将对http://www.xy101.com 网站的所有请求跳转到自定义的维护页面或图片,本地可以访问

set $rewrite ture;
if ($remote_addr = "本地主机主机ip") {set rewirte false;
}if (rewrite = true) {rewrite ^/weihu.html;
} location = /weihu.html {root /var/www/html;
}

相关文章:

NGINX之location和rewrite

一.NGINX常用的正则表达式 二.Location location作用:对访问的路径做访问控制或者代理转发 1.location 常用的匹配规则&#xff1a; 进行普通字符精确匹配&#xff0c;也就是完全匹配^~ / 表示普通字符匹配。使用前缀匹配。如果匹配成功&#xff0c;则不再匹配其它 …...

Python数据框的合并(一) -- merge函数

目录 1 merge 函数详解 1.1 左连接&#xff08;Left Join&#xff09;: 1.2 右连接&#xff08;Right Join&#xff09;: 1.3 全连接&#xff08;Full Join 或 Outer Join&#xff09;: 2 代码示例 2.1 加载模块并创建示例数据框 2.2 左连接 2.3 右连接 2.4 全连接 1 m…...

【Qt秘籍】[010]-Qt常用控件

一、控件概述 在GUI&#xff08;图形用户界面&#xff09;开发领域&#xff0c;Qt无疑是众多开发者心中的首选框架之一。它不仅跨平台、功能强大&#xff0c;而且拥有丰富且灵活的控件库&#xff0c;使得开发者能够快速构建美观、高效的用户界面。对于初学者而言&#xff0…...

TypeScript基础教程学习

菜鸟教程 TypeScript基础类型 数字类型 number 双精度 64 位浮点值。它可以用来表示整数和分数。 let binaryLiteral: number 0b1010; // 二进制 let octalLiteral: number 0o744; // 八进制 let decLiteral: number 6; // 十进制 let hexLiteral: number 0xf00d…...

JavaSE面试

①.简述面向对象的三大特征 封装、继承、多态 1.封装&#xff1a; 概念&#xff1a; 是将类的某些信息隐藏在类的内部&#xff0c;不允许外部程序直接访问&#xff0c;而是通过该类提供的方法来实现对隐藏信息的操作和访问。 好处 &#xff1a; ①便于修改&#xff0c;增强了代…...

安全漏洞扫描工具

常用的安全漏洞扫描工具涵盖了网络扫描、Web应用扫描、系统漏洞检测等多个方面&#xff0c;以下是一些业界广泛认可和常用的工具&#xff1a; Nmap - 网络映射和安全审计工具&#xff0c;用于发现网络上的主机和服务&#xff0c;识别操作系统&#xff0c;枚举开放端口&#xff…...

前端开发部署:Visual Studio Code + vue

〇 说明 本教程全部采用默认安装路径&#xff0c;因为在进行自定义路径安装的时候&#xff0c;需要配置各种环境变量&#xff0c;在这个配置过程中&#xff0c;可能出现各种很混乱的问题。 一 安装Node.js 1 下载https://nodejs.org/en 2 按照默认NEXT执行 C:\Program Files…...

基于Sentry+OpenTelemetry实现微服务前后端全链路监控

文章目录 前⾔背景技术⽅案Sentry私有化部署部署环境准备 项目集成前端后端agent探针集成sentry sdk集成增强探针为⽇志注⼊TraceID异常处理SDK⾃定义开发sentry sdk⾃定义开发⾃定义SentryEvent注⼊otel追踪信息⾃定义全局异常上报issue事件新增动态过滤功能 Java Agent Exten…...

jquery.datetimepicker无法添加清除按钮的问题

项目场景&#xff1a; 自从决定用现有新技术实现CRM老项目起&#xff0c;就开始了我的折腾之路&#xff0c;最近一直在折腾前端页面&#xff0c;不像后端Java&#xff0c;写的有问题运行会报错&#xff0c;大多数报错一搜就能找到解决方案&#xff0c;前端这个倒好&#xff0c…...

Qt中解决编译中文乱码和编译失败的问题

解决方法 1.使用#pragma execution_character_set(“utf-8”) QT5中在cpp中使用#pragma execution_character_set(“utf-8”)解决中文乱码&#xff0c;不过这里要求该源代码必须保存成带Bom的utf-8格式&#xff0c;这也是有些在网上下载的代码&#xff0c;加上这句源代码后还…...

Android状态栏适配问题

Android状态栏适配是一个老生常谈的问题&#xff0c;那么我又拿出来讲了&#xff0c;因为这个东西确实太重要了&#xff0c;基本上每个项目都用得到。状态栏总共有几种形态。第一&#xff0c;让状态栏颜色跟应用主色调一致&#xff0c;布局内容不占有状态栏的位置。第二&#x…...

如何为色盲适配图形用户界面

首发日期 2024-05-25, 以下为原文内容: 答案很简单: 把彩色去掉, 测试. 色盲, 正式名称 色觉异常. 众所周知, 色盲分不清颜色. 如果用户界面设计的不合理, 比如不同项目只使用颜色区分, 而没有形状区分, 那么色盲使用起来就会非常难受, 甚至无法使用. 色盲中最严重的情况称为…...

【爬虫实战项目一】Python爬取豆瓣电影榜单数据

目录 一、环境准备 二、编写代码 2.1 分页分析 2.2 编码 一、环境准备 安装requests和lxml pip install requests pip install lxml 二、编写代码 2.1 分页分析 编写代码前我们先看看榜单的url 我们假如要爬取五页的数据&#xff0c;那么五个url分别是&#xff1a; htt…...

AI-知识库搭建(一)腾讯云向量数据库使用

一、AI知识库 将已知的问答知识&#xff0c;问题和答案转变成向量存储在向量数据库&#xff0c;在查找答案时&#xff0c;输入问题&#xff0c;将问题向量化&#xff0c;匹配向量库的问题&#xff0c;将向量相似度最高的问题筛选出来&#xff0c;将答案提交。 二、腾讯云向量数…...

AI数据分析:根据Excel表格数据绘制柱形图

工作任务&#xff1a;将Excel文件中2013年至2019年间线上图书的销售额&#xff0c;以条形图的形式呈现&#xff0c;每个条形的高度代表相应年份的销售额&#xff0c;同时在每个条形上方标注具体的销售额数值 在deepseek中输入提示词&#xff1a; 你是一个Python编程专家&#…...

基于协调过滤算法商品推荐系统的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;商品管理&#xff0c;论坛管理&#xff0c;商品资讯管理 前台账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;论坛&#xff0c;商品资讯&#xff0c;商家&#xff0c;商品 开发系统…...

CS1061 “HtmlHelper”未包含“Partial”的定义,并且找不到可接受第一个“HtmlHelper”类型参数的可访问扩展方法“Partial”

严重性 代码 说明 项目 文件 行 禁止显示状态 错误 CS1061 “HtmlHelper”未包含“Partial”的定义&#xff0c;并且找不到可接受第一个“HtmlHelper”类型参数的可访问扩展方法“Partial”(是否缺少 using 指令或程序集引用?) 14_Views_Message_E…...

大数据运维学习笔记之flink standalone flink on yarn集群搭建 —— 筑梦之路

...

在知识的海洋中航行:问题的演变与智慧的追求

在信息技术迅猛发展的今天&#xff0c;互联网和人工智能已成为我们生活中不可或缺的一部分。它们像是一座座灯塔&#xff0c;照亮了知识的海洋&#xff0c;使得曾经难以触及的知识变得触手可及。随着这些技术的普及&#xff0c;越来越多的问题能够迅速得到答案。然而&#xff0…...

splice()、slice()、split()三种方法的区别

slice slice() 方法返回一个新的数组对象&#xff0c;这一对象是一个由 start 和 end 决定的原数组的浅拷贝&#xff08;包括 start&#xff0c;不包括 end&#xff09;&#xff0c;其中 start 和 end 代表了数组元素的索引。原始数组不会被改变。 const animals [ant, bison…...

基于大模型的 UI 自动化系统

基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...

label-studio的使用教程(导入本地路径)

文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

HDFS分布式存储 zookeeper

hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架&#xff0c;允许使用简单的变成模型跨计算机对大型集群进行分布式处理&#xff08;1.海量的数据存储 2.海量数据的计算&#xff09;Hadoop核心组件 hdfs&#xff08;分布式文件存储系统&#xff09;&a…...

安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖

在Vuzix M400 AR智能眼镜的助力下&#xff0c;卢森堡罗伯特舒曼医院&#xff08;the Robert Schuman Hospitals, HRS&#xff09;凭借在无菌制剂生产流程中引入增强现实技术&#xff08;AR&#xff09;创新项目&#xff0c;荣获了2024年6月7日由卢森堡医院药剂师协会&#xff0…...

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)

推荐 github 项目:GeminiImageApp(图片生成方向&#xff0c;可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...

免费PDF转图片工具

免费PDF转图片工具 一款简单易用的PDF转图片工具&#xff0c;可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件&#xff0c;也不需要在线上传文件&#xff0c;保护您的隐私。 工具截图 主要特点 &#x1f680; 快速转换&#xff1a;本地转换&#xff0c;无需等待上…...

莫兰迪高级灰总结计划简约商务通用PPT模版

莫兰迪高级灰总结计划简约商务通用PPT模版&#xff0c;莫兰迪调色板清新简约工作汇报PPT模版&#xff0c;莫兰迪时尚风极简设计PPT模版&#xff0c;大学生毕业论文答辩PPT模版&#xff0c;莫兰迪配色总结计划简约商务通用PPT模版&#xff0c;莫兰迪商务汇报PPT模版&#xff0c;…...

Go语言多线程问题

打印零与奇偶数&#xff08;leetcode 1116&#xff09; 方法1&#xff1a;使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...

LOOI机器人的技术实现解析:从手势识别到边缘检测

LOOI机器人作为一款创新的AI硬件产品&#xff0c;通过将智能手机转变为具有情感交互能力的桌面机器人&#xff0c;展示了前沿AI技术与传统硬件设计的完美结合。作为AI与玩具领域的专家&#xff0c;我将全面解析LOOI的技术实现架构&#xff0c;特别是其手势识别、物体识别和环境…...

SQL Server 触发器调用存储过程实现发送 HTTP 请求

文章目录 需求分析解决第 1 步:前置条件,启用 OLE 自动化方式 1:使用 SQL 实现启用 OLE 自动化方式 2:Sql Server 2005启动OLE自动化方式 3:Sql Server 2008启动OLE自动化第 2 步:创建存储过程第 3 步:创建触发器扩展 - 如何调试?第 1 步:登录 SQL Server 2008第 2 步…...