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;
}

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

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

相关文章

redis源码解析-字符串

摘要 redis中string是最简单Redis类型&#xff0c;本文主要通过查看源代码了解string的实现原理。 简单动态字符串 redis没有使用c语言传统的字符串表示&#xff0c;而是自己构建了一种名为简单动态字符串&#xff08;Simple dynamic string,SDS&#xff09;的抽象类型&…

JVM学习-监控工具(一)

使用数据说明问题&#xff0c;使用知识分析问题&#xff0c;使用工具处理问题 无监控&#xff0c;不调优&#xff01; 命令行工具 在JDK安装目录下&#xff0c;可以查看到相应的命令行工具&#xff0c;如下图 jps(Java Process Status) 显示指定系统内所有的Hotpot虚拟机…

【自然语言处理】文本情感分析

文本情感分析 1 任务目标 1.1 案例简介 情感分析旨在挖掘文本中的主观信息&#xff0c;它是自然语言处理中的经典任务。在本次任务中&#xff0c;我们将在影评文本数据集&#xff08;Rotten Tomato&#xff09;上进行情感分析&#xff0c;通过实现课堂讲授的模型方法&#x…

OpenStack无效数据清空脚本

​​​​​​​介绍 在以openstack为底层开发的一些项目中&#xff0c;常常会遇到项目中数据与openstack数据不同步的问题&#xff0c;为了简化清空无效数据的繁琐&#xff0c;提供以下脚本便于运维操作。 环境变量 [rootcloud ~]# cat admin.sh export OS_USERNAMEadmin ex…

蓝图collapseNodes很有用

学到了&#xff0c;选中N个节点后&#xff0c;再右键collapseNode&#xff0c;可以使代码很清晰&#xff0c;双击后可以看到相应的代码&#xff0c;具有层次感。

【python科学文献计量】关于中国知网检索策略的验证,以事故伤害严重程度检索为例

关于中国知网检索策略的验证,以事故伤害严重程度检索为例 1 背景2 文献下载3 数据处理1 背景 由于要进行相关研究内容的综述,需要了解当前我国对于事故伤害严重程度的研究现状,采用国内较为知名的检索网站(中国知网)进行文献数据集检索 由于最近知网出bug,检索的结果在…

【最新鸿蒙应用开发】——使用axios完成手机号注册业务

使用Axios请求实现目标效果图&#xff1a; 短信验证码登录 校验图形验证码&#xff0c;校验通过 发送短信验证码到用户手机上&#xff0c;可通过在线 WebSocket查看&#xff1a;wss://guardian-api.itheima.net/verifyCode 根据 手机号 短信验证码 实现登录 更新图形验证码…

Python环境集成:全方位探索与实战指南

Python环境集成&#xff1a;全方位探索与实战指南 在软件开发领域&#xff0c;Python环境的集成是一项至关重要的任务。它涉及到多个组件的协同工作&#xff0c;以确保Python代码能够顺利运行。本文将从四个方面、五个方面、六个方面和七个方面对Python环境集成进行深入剖析&a…

数据结构设计算法以比较链串S1和链串S2的大小,若S1 < S2,返回-1;若S1 = S2,返回0;否则返回1。

可以使用以下算法来比较两个链串的大小&#xff1a; 创建两个指针&#xff0c;一个指向链串S1的头部&#xff0c;一个指向链串S2的头部。依次比较两个指针指向的节点的值&#xff0c;如果相等&#xff0c;则继续比较下一个节点。如果两个节点的值不相等&#xff0c;则根据节点…

基于React的SSG静态站点渲染方案

基于React的SSG静态站点渲染方案 静态站点生成SSG - Static Site Generation是一种在构建时生成静态HTML等文件资源的方法&#xff0c;其可以完全不需要服务端的运行&#xff0c;通过预先生成静态文件&#xff0c;实现快速的内容加载和高度的安全性。由于其生成的是纯静态资源…

日本指数实时API接口

日本 指数 实时API接口 # Restful API https://tsanghi.com/api/fin/index/JPN/realtime?token{token}&ticker{ticker}指定指数代码&#xff0c;获取该指数的实时行情&#xff08;开、高、低、收、量&#xff09;。 更新周期&#xff1a;实时。 请求方式&#xff1a;GET。…

CV每日论文--2024.6.4

1、Mixed Diffusion for 3D Indoor Scene Synthesis 中文 标题&#xff1a;用于 3D 室内场景合成的混合扩散 简介&#xff1a;这篇论文提出了一种名为MiDiffusion的混合离散-连续扩散模型,用于从给定的房间类型、平面图和可能存在的物体中合成逼真的3D室内场景。 作者指出,该…

【Unity实战篇 】 | Unity实现UGUI颜色渐变,支持透明渐变

前言 【Unity实战篇 】 | Unity实现UGUI颜色渐变&#xff0c;支持透明渐变一、双层颜色渐变1.1 组件属性面板1.2 效果及代码 二、多层颜色渐变2.1 组件属性面板2.2 效果及代码 总结 前言 在Unity中UGUI的实现图片和文字颜色渐变效果是一个很常见的需求。下面就来看一下颜色渐变…

机器学习中的集成学习

&#x1f4ac;内容概要 1 集成学习概述及主要研究领域 2 简单集成技术  2.1 投票法  2.2 平均法  2.3 加权平均 3 高级集成技术  3.1 Bagging  3.2 Boosting  3.3 Bagging vs Boosting 4 基于Bagging和Boosting的机器学习算法  4.1 sklearn中的Bagging算法  4.2 sklea…

python 深浅拷贝

浅拷贝 copy函数就是浅拷贝 copy函数是浅拷贝&#xff0c;只对可变类型的第一层对象进行拷贝 对拷贝的对象开辟新的内存空间进行存储&#xff0c;子对象不会开辟新的空间 list1 [1, 2, 3] list2 [a, list1] list3 list2.copy()print(id(list1)) print(id(list2)) …

Layout软件AD中关于铺铜的技巧

Layout软件AD中关于铺铜的技巧 目录 一.铜的连接方式: 二.关于铜的编辑: 三.Shelve的使用:

探索Linux世界的钥匙:Bash命令详解

标题&#xff1a;探索Linux世界的钥匙&#xff1a;Bash命令详解 引言&#xff1a; 在Linux的世界里&#xff0c;Bash&#xff08;Bourne Again Shell&#xff09;无疑是每个用户和系统管理员的得力助手。作为Linux系统中最常用的shell之一&#xff0c;Bash提供了丰富的命令和强…

1961. 检查字符串是否为数组前缀 - 力扣

1. 题目 给你一个字符串 s 和一个字符串数组 words &#xff0c;请你判断 s 是否为 words 的 前缀字符串 。 字符串 s 要成为 words 的 前缀字符串 &#xff0c;需要满足&#xff1a;s 可以由 words 中的前 k&#xff08;k 为 正数 &#xff09;个字符串按顺序相连得到&#xf…

大型语言模型的工作原理(LLM:从零学起)

目录 一、说明 二、LLM如何运作 三、预训练&#xff1a;基本模型 四、微调&#xff1a;培训助手 五、RLHF&#xff1a;从人类反馈中强化学习 六、提示工程 七、总结 一、说明 这是我们谈论LLM系列的第二篇文章。在本文中&#xff0c;我们旨在为大型语言模型 &#xff08;LLM&am…

Feign @SpringQueryMap将POJO或Map参数注释为查询参数映射

一、 Feign SpringQueryMap支持 OpenFeign QueryMap批注支持将POJO用作GET参数映射。不幸的是&#xff0c;默认的OpenFeign QueryMap注释与Spring不兼容&#xff0c;因为它缺少value属性。 Spring Cloud OpenFeign提供等效的SpringQueryMap批注&#xff0c;该批注用于将POJO或…