nginx的重定向(rewrite)

1、location 匹配

location匹配的就是后面的URL,对访问的路径做访问控制或者代理转发

共有三个匹配:精确匹配、正则匹配、一般配

a、精确匹配

格式:location=/ 对字符串进行完全匹配,必须完全合

c、正则匹配

^~:前缀匹配 以什么为开头,如果匹配成功,则不再匹配其它的正则匹配的location。

~:区分大小写的匹配

~*:不区分大小写

!~:区分大小写的区分

!~*:不匹配大小的取反

c、一般匹配(通用匹配)

location  /字符串

2、location 优先级以及原则

优先级:精确>正则>一般

优先级总结:

location= 最高,必须是完整路径

location= 1.jpg 每一位都需要一摸一样否则匹配不到

location= 完整路径 > location ^~ > location~ location ~* >location /部分起始位置 >location /

实际网站中的使用规则:

location= / {

root html;

index index.html index.htm index.php;

}

网站首页

第二个必选的规则:处理静态请求的页面

location^~ /static /{

root/web/sataic/

index index.html index.htm;

}

用来匹配静态页面

location ~* \.(jpg.gif|png|jpeg|css)$ {

root /web/pirturs/;

idnex index.html index.tml;

}

访问图片或者指定的后缀名

第三个规则,一般通用规则,用来转发.php .js 为后缀的动态请求到后端服务器(数据库)

location / {

proxy_pass

}

转发后端请求和负载均衡

3、rewrite重定向

rewrite就是把当前访问的页面跳转到其他页面

rewrite工作方式,通过nginx的全局变量或者是自定义变量,结合正则表达式和标志位实现url的重定向,对访问的域名或者域名内的URL路径地址重写。

4、rewrite 和 location区别

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

5、nginx的变量

$url 客户端另外的url地址

$host 请求的主机名

$http_user_agent :客户端请求的浏览器和操作系统

$http_referer:请求头的fefrr的信息模式当前页面来源的url

$remote_addr 客户端的IP地址

$remote_port 客户端的端口

$server_port 服务端的端口号

$server_addr 服务端的ip地址

$request_method 获取客户端请求的方法

$scheme请求的协议,要么是http 要么是https

x_forward_for :用来获取请求头当中客户端的真实ip地址,代理服务器添加,在代理服务器中指示客户端的ip地址

X-Real-IP: 客户端真实的ip地址

6、标志位

flag:(四种)

permanen 永久重定向。返回码是301 浏览器地址会显示跳转后的url地址 (方便搜索引擎可以被搜索到)

redirect 临时重定向,返回码302 浏览器地址会显示跳转后url地址

break 永久重定向 返回码也是301 但是他匹配到规则之后不会在向下匹配其他规则,url 也不会发生变化

last 重定向但是会继续向下匹配其他的location规则

7、rewrite的执行顺序

1、server模块的rewrite优先级最高

2、匹配location的规则

3、执行选定的location规则

8、rewrite的语法

rewrite 正则表达式 跳转后的内容 标志位;

在重定向的过程中使用last方式进行重定向,但是没有结束语,陷入了死循环,nginx会自动循环10次

last最多只能执行10次,超过10次没有结束就会停止,然后保存500

将结束语last改成break避免死循环

9、实验 基于域名进行跳转,老的不用了,但是依然可以访问,统统跳转到新的域名

宿主机 :192.168.10.20 域名www.xy102.com

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

 在/etc/hosts目录下进行本地映射

在虚拟机自带的浏览器对域名www.xy102.com进行访问,域名跳转到www.zlm.com只域名跳转,内容不变   

 10、实验:基于ip进行跳转,公司有新业务上线,测试阶段,其他的ip只能显示维护中,只有本机能正常访问

设置一个变量名,变量名rewrite值是true,接下来判断ip是否合法,true进行跳转,如果是false跳转到错误页面

   set $rewrite true;if ( $remote_addr = "192.168.10.20" ){set $rewrite false;
}if ( $rewrite = true ){rewrite (.+) /error.html;
}location = /error.html {root html;index index.html;
}

error.html的内容 

 

使用宿主机192.168.10.20对192.168.10.20进行访问  

 

使用192.168.10.30对192.168.10.20进行访问  

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

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

相关文章

Android 抓取 CPU 资源信息

在 Android 开发中,使用 ADB(Android Debug Bridge)命令获取 CPU 资源信息有很多重要的作用。这些命令可以帮助开发者在多种情况下分析和优化应用性能、解决问题以及进行系统性调试。 以下列举一些 ABD 获取 CPU 资源信息的命令 获取 CPU 核…

Docker镜像加速配置

由于当前运营商网络问题,可能会导致您拉取 Docker Hub 镜像变慢,索引可以配置阿里云镜像加速器。阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台 每个人镜像地址都不一样,需要登陆阿里云自行查看,地址在上面&a…

头文件的包含

目录 开头1.什么是头文件的包含?2.头文件的包含的实际应用(这里只列举其一)“hello,world!”模块化a.chello,world!.chello,world!.h 结尾 开头 大家好,我叫这是我58。今天,我们来学习什么是头文件的包含。 1.什么是头文件的包含? 头文件的包含&…

ubuntu20.04换源

一、概述 重新在联想电脑上安装ubuntu20.04系统后,在安装ROS过程中,出现了不少问题,其中在使用下面命令时候,发现如下问题。 sudo apt-get update 使用update更新当前所安装软件版本时候,发现报出错误,无法…

Java面向对象练习(1.手机类)(2024.7.4)

手机类 package Phone;public class Phone {private String brand;private int price;private String color;public Phone(){}public Phone(String brand, int price, String color){this.brand brand;this.price price;this.color color;}public void setBrand(String bra…

SSM学生资助管理系统-计算机毕业设计源码30825

目 录 摘 要 1 绪论 1.1 研究背景 1.2研究意义 1.3论文结构与章节安排 2 学生资助管理系统分析 2.1 可行性分析 2.1.1 技术可行性分析 2.1.2 经济可行性分析 2.1.3 法律可行性分析 2.2 系统功能分析 2.2.1 功能性分析 2.2.2 非功能性分析 2.3 系统用例分析 2.4 …

SQL面试题练习 —— 找出所有连续未登录5天及以上的用户并提取出这些用户最近一次登录的日期

目录 1 题目2 建表语句3 题解 1 题目 找出所有连续未登录5天及以上的用户并提取出这些用户最近一次登录的日期 样例数据 ----------------------------------------------- | user_login.user_id | user_login.login_date | ---------------------------------------------…

Conmi的正确答案——ESP32-C3开启安全下载模式

IDF版本:4.4.7 注意事项:一旦烧录“安全下载模式”,模组将无法被读取或清理,只能通过eclipse原项目烧录程序进行重新烧录,无法再烧录其他固件。 20240703110201——追加解法,暂时无法解安全下载模式 &…

vitejs/plugin-vue插件

源文档:地址 注意:从vue 3.2.13和vitejs/plugin-vue 1.9.0开始,vue/compiler-sfc不再需要作为对等依赖。 // vite.config.js import vue from vitejs/plugin-vueexport default {plugins: [vue()], } 为了支持JSX/TSX,还需要vi…

拓展欧几里得和裴蜀定理

裴蜀定理(或贝祖定理)说明了对任何整数a、b和它们的最大公约数d,关于未知数x和y的线性不定方程(称为裴蜀等式):若a,b是整数,且gcd(a,b)d,那么对于任意的整数x,y,axby都一定是d的倍数&#xff0c…

SEO之快速网站诊断(二)

初创企业搭建网站的朋友看1号文章;想学习云计算,怎么入门看2号文章谢谢支持: 1、我给不会敲代码又想搭建网站的人建议 2、新手上云 (接上一篇。。。。) 4、外部链接 Google 的link:指令非常不准确,基本不…

【掌握C++ string 类】——【高效字符串操作】的【现代编程艺术】

专栏&#xff1a;C学习笔记 上一篇&#xff1a;【C】——【 STL简介】——【详细讲解】 1. 为什么要学习 string 类&#xff1f; 1.1 C 语言中的字符串 在 C 语言中&#xff0c;字符串是以 \0 结尾的字符集合。如下所示&#xff1a; #include <stdio.h>int main() {c…

Postman工具基本使用

一、安装及基本使用 安装及基本使用参见外网文档&#xff1a;全网最全的 postman 工具使用教程_postman使用-CSDN博客 建议版本&#xff1a;11以下&#xff0c;比如10.x.x版本。11版本以后貌似是必须登录使用 二、禁止更新 彻底禁止postman更新 - 简书 host增加&#xff1…

【Linux进阶】Linux目录配置,FHS

在了解了每个文件的相关种类与属性&#xff0c;以及了解了如何修改文件属性与权限的相关信息后&#xff0c;再来要了解的就是&#xff0c;为什么每个Linux发行版它们的配置文件、执行文件、每个目录内放置的东西&#xff0c;其实都差不多&#xff1f;原来是有一套标准依据&…

uniapp+vue3+echarts编写微信小程序

uniappvue3echarts编写微信小程序 记录一下自己uniapp使用echarts开发图表&#xff0c;之前网上找了很多&#xff0c;本以为应该是挺常见的使用方式&#xff0c;没想到引入之路居然这么坎坷&#xff0c;在Dcloud插件市场&#xff0c;使用最多的&#xff1a;echarts-for-wx 但是…

vue---基本原理(二)

1、slot的基础理解 slot又名插槽&#xff0c;是vue的内容分发机制&#xff0c;组件内部的模板引擎使用slot元素作为承载分发的出口。是子组件的一个模板标签元素&#xff0c;而这一个标签元素是否显示&#xff0c;以及怎么显示&#xff0c;是由父元素控制的。slot又分为默认插槽…

用Python制作动态钟表:实时显示时间的动画

文章目录 引言准备工作前置条件 代码实现与解析导入必要的库初始化Pygame绘制钟表函数主循环 完整代码 引言 动态钟表是一种直观且实用的UI元素&#xff0c;能够实时显示当前时间。在这篇博客中&#xff0c;我们将使用Python创建一个动态钟表&#xff0c;通过利用Pygame库来实…

React、JSX简介、渲染列表、基础和复杂的条件渲染

目录 一、简介 1、搭建环境 2、回到项目&#xff08;VScode&#xff09; 3、项目核心渲染路径 4、网站资料&#xff08;启动项目的方法&#xff09; 二、JSX 三、实现渲染列表 四、实现条件渲染 五、实现复杂条件渲染 一、简介 1、搭建环境 npx creat-react-app reac…

YUV 颜色编码详解

YUV 简介 YUV是被欧洲电视系统所采用的一种颜色编码方法&#xff08;属于PAL&#xff09;&#xff0c;是PAL和SECAM模拟彩色电视制式采用的颜色空间。在现代彩色电视系统中&#xff0c;通常采用三管彩色摄影机或彩色CCD摄影机进行取像&#xff0c;然后把取得的彩色图像信号经分…

CC6利用链分析

CC1的两条利用链&#xff0c;在JDK 8u71之后已修复&#xff0c;不可利用。 学一下不受版本限制的CC6利用链 分析版本 Commons Collections 3.2.1 JDK 8u65 环境配置参考JAVA安全初探(三):CC1链全分析 分析过程 我的Github主页Java反序列化学习同步更新&#xff0c;有简单…