Nginx Rewrite的应用

news2024/11/14 2:23:24

目录

一、Nginx Rewrite

二、Rewrite的功能 

1.Rewrite  跳转场景

2.Rewrite  跳转实现

3.Rewrite  实际场景

4.Rewrite  正则表达式

5.Rewrite  命令/语法格式

6.location  分类

7.location  优先级

8.Rewrite和location比较

9.根据以上了解,小案例来操作实现我们在企业跳转案例

三、Rewrite  跳转场景

五、Rewrite命令/语法

六、location分类

1.location 大致可以分为三类

2.location 常用的匹配规则

3.location 优先级

七、跳转案例

1.基于域名的跳转

①关闭防火墙和安全机制

②修改配置文件

③域名解析

④重启服务

⑤浏览器验证查看

 2.基于客户端 IP 访问跳转

①修改配置文件

② 创建网页返回执行文件

 ③重启服务

 ④前往浏览器验证

​编辑3.基于旧域名跳转到新域名后面加目录

①修改配置文件

②.域名解析

③重启服务

④浏览器测试

4.基于参数匹配的跳转

①.修改配置文件

 ②.重启服务

 ③.浏览器测试

5.基于目录下所有 php 结尾的文件跳转

①.修改配置文件

②.重启服务

③.浏览器测试

 6.基于最普通一条 url 请求的跳转

① .修改配置文件

​②.重启服务

③.浏览器测试


一、Nginx Rewrite

Rewrite主要的功能是实现URL重写,Nginx 的 Rewrite 规则采用 PCRE Perl 兼容正则表达式的语法进行规则匹配,如相使用 Nginx 的 Rewrite 功能,在编译 Nginx 前要编译安装 PCRE 库。Rewrite主要实现url地址重写,以及重定向,就是把传入web的请求重定向到其他url的过程。

rewrite和location的功能有点相像,都能实现跳转,主要区别在于rewrite常用于同一域名内更改获取资源的路径,而location是对一类路径做控制访问和反向代理,可以proxy_pass到其他服务器。

Nginx提供的全局变量或自己设置的变量,结合正则表达式和标志位实现url重写以及重定向。

rewrite只能放在server{},location{},if{}中,

并且只能对域名后边的除去传递的参数外的字符串起作用。

二、Rewrite的功能 

1.Rewrite  跳转场景

2.Rewrite  跳转实现

3.Rewrite  实际场景

4.Rewrite  正则表达式

5.Rewrite  命令/语法格式

6.location  分类

7.location  优先级

8.Rewrite和location比较

9.根据以上了解,小案例来操作实现我们在企业跳转案例

三、Rewrite  跳转场景

1.URL看起来更规范、合理

2.企业会将动态URL地址伪装成静态地址提供服务

3.网址换成新域名后,让旧的访问跳转到新的域名上

4.服务端某些业务调整

URL:就是一个具体路径/位置,指的就是一个拥有相同类型/特性的对象集合

URN:用名称定位

四、Nginx跳转需要的实现方式

使用Rewrite进行匹配跳转——>防盗链

使用if匹配全局变量后跳转——>centos系统的全局变量不是Nginx服务本身全局变量

使用location匹配再跳转——>匹配的访问URL路径,location可以匹配本地重写以及跨服务器跳转

Rewrite放在server{} ,  if{} , location{ } 段中

location只对域名后边的除去传递参数外的字符串起作用

对域名或参数字符串

使用if全局变量匹配

使用proxy_pass反向代理

五、Rewrite命令/语法

Rewrite         <regex>          <replacement>       [flag];

                      正则                跳转后的内容         Rewrite支持flag标记

flag标记说明

标记

last                 相当于Apache的[L]标记,表示完成Rewrite,在本条规则完成后,继续向下匹配新                           的location URL规则,一般在server和if当中

break              本条规则匹配完成即终止,不再匹配后面规则

redirect           返回302临时重定向,浏览器地址会显示跳转后的URL地址,爬虫不会更新URL

permanent      返回301永久重定向,浏览器地址会显示跳转后URL地址,爬虫更新URL

break和last类似,但是不会重新发起一次处理过程,而是直接放回处理结果

redirect            该标记表示当前规则匹配成功后立即进行重定向操作

permanent       该标记和redirect类似,但是永久重定向

set                    标记表示当前规则匹配成功设置一个变量,并把变量传入下一条规则

六、location分类

1.location 大致可以分为三类

精准匹配:location = / {...}

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

2.location 常用的匹配规则

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

3.location 优先级

首先精确匹配 =
其次前缀匹配 ^~
其次是按文件中顺序的正则匹配 ~或~*
然后匹配不带任何修饰的前缀匹配
最后是交给 / 通用匹配     

七、跳转案例

1.基于域名的跳转

①关闭防火墙和安全机制

②修改配置文件

vim /usr/local/nginx/conf/nginx.conf

③域名解析

echo "192.168.146.110www.kgc.com www.benet.com" >> /etc/hosts 

④重启服务

systemctl restart nginx

⑤浏览器验证查看

 2.基于客户端 IP 访问跳转

①修改配置文件

vim /usr/local/nginx/conf/nginx.conf

② 创建网页返回执行文件

mkdir -p /var/www/html/
echo "<h1>We are maintaining now!</h1>" > /var/www/html/weihu.html

 ③重启服务

systemctl restart nginx

 ④前往浏览器验证

本机浏览器

用另一台不同IP地址的浏览器测试

3.基于旧域名跳转到新域名后面加目录

①修改配置文件

vim /usr/local/nginx/conf/nginx.conf

②.域名解析

③重启服务

systemctl restart nginx

④浏览器测试

 

使用浏览器访问 http://bbs.kgc.com/post/1.html 跳转到 http://www.kgc.com/bbs/post/1.html

4.基于参数匹配的跳转

①.修改配置文件

vim /usr/local/nginx/conf/nginx.conf

 ②.重启服务

systemctl restart nginx

 ③.浏览器测试

使用浏览器访问 http://www.kgc.com/100-200-100.html 或 http://www.kgc.com/100-100-100.html 跳转到http://www.kgc.com页面。

5.基于目录下所有 php 结尾的文件跳转

①.修改配置文件

 vim /usr/local/nginx/conf/nginx.conf

②.重启服务

systemctl restart nginx

 ③.浏览器测试

浏览器访问 http://www.kgc.com/upload/123.php 跳转到http://www.kgc.com页面。

 6.基于最普通一条 url 请求的跳转

① .修改配置文件

vim /usr/local/nginx/conf/nginx.conf

②.重启服务

③.浏览器测试

浏览器访问 http://www.kgc.com/abc/123.html 跳转到http://www.kgc.com页面。

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

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

相关文章

【STM32】F103(64K/128K Flash)外设概述

本文介绍的是STM32F103 中等容量产品&#xff08;STM32F103x8xx和STM32F103xBxx&#xff09;的硬件数据&#xff0c;即64KB或128KB Flash&#xff0c;20KB SRAM。 ST官网资料&#xff1a;https://www.st.com/zh/microcontrollers-microprocessors/stm32f103.html ST官方的中等…

Scala中的隐式参数、隐式函数和隐式类

使用 implicit 修饰的内容是隐式内容, 隐式的特点就是遇到适应的类型会自动的应用。隐式可以使得静态类型动态化&#xff0c;为现有类库添加功能&#xff0c;隐式的代理增强一个类或者一个方法。 隐式转化的时机 当方法中的参数的类型与目标类型不一致时当对象调用所在类中不…

HOT18-矩阵置零

leetcode原题链接: 矩阵置零 题目描述 给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,1,1],[1,0,1],[1,1,1]] 输出&#xff1a;[[1,0,1],[0,…

【Flutter】Flutter Redux 入门:解决状态管理的问题

文章目录 一、 前言二、 Flutter Redux 简介1. 什么是 Redux2. 为什么需要 Redux3. Flutter Redux 的作用 三、 Flutter Redux 的基本使用1. 安装和配置2. 创建 Store3. 使用 StoreProvider 四、 Flutter Redux 的基础示例1. 创建一个简单的计数器应用2. 解析代码和说明 五、 版…

解决npm WARN deprecated uuid@3.4.0: Please upgrade to version 7 or higher

一、问题 环境 系统&#xff1a;centos 7 node &#xff1a;v18.16.1 npm&#xff1a;9.5.1 安装pm2 npm install -g pm2提示报错&#xff1a; npm WARN deprecated uuid3.4.0: Please upgrade to version 7 or higher. Older versions may use Math.random() in certai…

记录react 视频和 预览拖动

一、react 视频 ##1、循环播放 import React, { useEffect, useState, useRef } from "react"; const videoRef useRef(null); const showVideoClass { display: "block", width: "100%", height: "100%" } const hindVideoClass …

Zookeeper的应用场景

一、Zookeeper的应用场景包括&#xff1a; 配置中心&#xff1a;Zookeeper可以用来存储和管理配置信息&#xff0c;例如集群中的机器配置、服务地址配置等。通过Zookeeper&#xff0c;可以将配置信息统一管理&#xff0c;同时实现动态加载和更新。统一命名服务&#xff1a;Zoo…

Ubuntu 20.04.02 LTS安装virtualbox7.0

ubuntu22.04的软件仓库也有virtualbox&#xff0c;不过版本较老。 使用安装命令&#xff1a;sudo apt install virtualbox 如果想要安装最新版&#xff0c;那么需要去官网下载deb包或者使用官方的仓库。 这里采用安装Oracle官方仓库的方法。 执行如下命令&#xff1a; wge…

fastadmin 点击获取当前行数据

fastadmin 点击获取当前行数据 // 先获取当前id // 使用方法的语法&#xff1a;$(#table).bootstrapTable(method, parameter);$(document).on("click",".detailtips",function(){var ids$(this).attr("id");var rows$("#table").boo…

pytorch快速入门中文——04(训练图片分类器)

训练分类器 原文&#xff1a;https://pytorch.org/tutorials/beginner/blitz/cifar10_tutorial.html#sphx-glr-beginner-blitz-cifar10-tutorial-py 就是这个。 您已经了解了如何定义神经网络&#xff0c;计算损失并更新网络的权重。 现在您可能在想&#xff0c; 数据呢&…

java小技能:分布式任务调度平台

文章目录 引言I 报表数据生成II 注意事项2.1 任务创建2.2 pom.xml 添加到maven项目 see also 引言 任务调度的应用场景&#xff1a; 生成日报、月报、定时处理任务&#xff08;定期清理文件、处理数据&#xff09; I 报表数据生成 https://kunnan.blog.csdn.net/article/deta…

你知道GPT-3带的即时学习能力是什么吗

你知道GPT-3带的即时学习能力是什么吗 在人工智能领域&#xff0c;GPT-3&#xff08;Generative Pre-trained Transformer 3&#xff09;是当前比较先进的自然语言处理模型之一。它采用了自监督学习的方式进行训练&#xff0c;并且拥有强大的“in-context learning”&#xff…

nginx-rewrite

目录 1.rewrite 2.应用场景 3.跳转实现及特点 4.格式 5.location分类 6.具体应用场景 1.基于域名跳转 2.基于客户端ip访问跳转 3.基于旧域名跳转新域名后加的目录 4.基于匹配的跳转 5.基于目录下所有php结尾文件跳转 6.基于最普通一条url请求的跳转 7.总结 1.rewrite 重…

星辰秘典:揭开Python项目的神秘密码——2048游戏

✨博主&#xff1a;命运之光 &#x1f338;专栏&#xff1a;Python星辰秘典 &#x1f433;专栏&#xff1a;web开发&#xff08;html css js&#xff09; ❤️专栏&#xff1a;Java经典程序设计 ☀️博主的其他文章&#xff1a;点击进入博主的主页 前言&#xff1a;你好&#x…

Docker 部署 jar 项目

文章目录 1、上传jar包2、新建 Dockerfile 文件3、新建 deploy.sh 脚本&#xff08;创建并运行&#xff09;4、新建 upgrade.sh 脚本&#xff08;更新&#xff09; 1、上传jar包 2、新建 Dockerfile 文件 添加jar包及修改端口 # 基础镜像 FROM java:8 # 添加jar包 ADD servic…

百度智能车竞赛丝绸之路智能车设计与编程实现控制

一、项目简介 本项目现已基于鲸鱼机器人开发套件对其整体外形进行设计&#xff0c;并且对应于实习内容——以“丝绸之路”为题&#xff0c;对机器人各个功能与机器人结构部分进行相关设计与调整。主要可以实现“车道线巡检”“音乐交际”、“城堡检测”、“翻山越岭”。 本项…

Java使用策略模式和工厂模式来消除冗余的if-else语句(UML类图+案例+提供Gitee源码)

前言&#xff1a;在最近的后端开发中&#xff0c;多多少少会发现有很多if-else语句&#xff0c;如果条件过多则会造成整体代码看起来非常臃肿&#xff0c;这边我就举一个我在实际开发中的例子&#xff0c;来进行阐述这两种模式在实际开发中我是如何运用的。 目录 一、工厂模式…

把Jar打包为Maven 把jar打包为maven 将java项目打包为maven 将Java项目打包为Maven

把Jar打包为Maven 把jar打包为maven 将java项目打包为maven 将Java项目打包为Maven 自己写了一个通用SDK Jar包&#xff0c;但是现在的项目都是Maven项目&#xff0c;需要把Jar打包为Maven格式&#xff0c;输出到本地Maven仓库&#xff0c;在项目中可以引用查看Maven是否安装打…

nginx进行反向代理

Nginx是一个开源的高性能Web服务器和反向代理服务器。它最初是由Igor Sysoev在2004年开发的&#xff0c;现在由一个全球性的社区维护和支持。 Nginx的主要特点包括&#xff1a; 高性能&#xff1a;Nginx使用事件驱动模型&#xff0c;可以处理高并发请求&#xff0c;具有出色的…

A* 算法研究(附 Python / C++ 实现)

A* 算法研究 参考 A*寻路算法详解 #A星 #启发式搜索 路径规划之 A* 算法 最短路搜索-从Dijkstra到Best-First再到A-Star 路径规划算法学习笔记&#xff08;一&#xff09;&#xff1a;A*算法 A*算法寻路&#xff08;C代码实现&#xff09; 《基于A*算法的自动泊车全局路径规划…