nginx的重定向(rewrite)

nginx的重定向(rewrite)

location 匹配

location匹配的就是后面的URI

/wordpress

192.168.60.20/wordpress

location匹配的分类和优先级

1、精确匹配 location = / 对字符串进行完全匹配,必须完全符合

2、正则匹配

^~ 前缀匹配,以什么为开头

~ 区分大小写的匹配

~* 不区分大小写

!~ 区分大小写的取反

!~* 不区分大小写的取反

3、一般匹配

location /字符串

精确匹配的优先级最高,其次是正则,最后是一般

优先级总结:
location = 完整路径   >   location  ^~  >   location ~      >     location /部分起始位置    >   location /
                                           location ~*

第一个规则:实际万战中的使用规则:

location  =   /  {
   root   html;
   index index.html index.htm index.php;
}
#网站首页

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

location ^~ /static/ {
  root /web/static;
  index index.html  index.htm;
}
#用来匹配静态页面

图片:

loction ~* \.(jpg|gif|png|jpeg|css)$ {
   root /web/picture/;
   index index.html index.htm;
}
#访问图片或者是指定的后缀名

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

location / {
  proxy_pass 
}
#用来转发后端请求和负载均衡

rewrite重定向:

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

rewrite的工作方式:通过nginx的全局变量或者自定义变量,结合正则表达式和标志位实现url的重定向。

nginx的变量

$uri 客户端请求的uri的地址

$host 请求的主机名

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

$http_referer 请求头的referer信息,表示当前页面来源的url

$remote_addr 客户端的ip地址

$remote_port 客户端的端口号

$server_addr 服务端的ip地址

$server_port 服务端的端口号

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

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

x_forwarded_for 用来获取请求头当中客户端的真实ip地址。代理服务器添加,在代理服务器当中只是客户端的ip地址

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

proxy_set_header X-Real-IP $remote_addr 加上这伊字段,客户端必须带上真实的ip地址

标志位

flag

permanet 永久重定向,返回码是301,浏览器地址栏会显示跳转后的URL地址

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

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

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

rewrite的执行顺序:

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

2、匹配location的规则

3、执行选定的location规则

rewrite的语法:

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

rewrite or internal refirection cycle while processing?

在重定向的过程中,使用了last方式进行重定向,但是,没有结束,陷入的死循环,nginx会自动循环10次,last匹配最多只能执行10次,超过10次没有结束,就会停止,然后报错500。

实验1:

基于域名进行跳转,老头不用了,但是依然能够访问,统统跳转到新的域名

操作:

1、配置域名跳转

[root@test3 ~]# cd /usr/local/nginx/conf/
[root@test3 conf]# vim nginx.conf
   server {
        listen       80;
        server_name  www.xy102.com;
        charset utf-8;
        #access_log  logs/host.access.log  main;
        location / {
            root   html;
            if ( $host = 'www.xy102.com' ) {
                rewrite ^/(.*)$ http://www.zxc.com/$1 permanent;
            }
            index  index.html index.htm;
        }

2、将ip地址进行域名映射

[root@test3 ~]# vim /etc/hosts
192.168.60.30 www.xy102.com www.zxc.com

3、结果

实验2:

基于客户端的IP进行跳转 公司有新业务上线,测试阶段,其他的ip只能显示维护中,只有192.168.60.30能正常访问。

操作:

1、定义可以正常访问的ip地址

 35     server {
 36         listen       80;
 37         server_name  www.xy102.com;
 38     
 39         charset utf-8;
 40     
 41         #access_log  logs/host.access.log  main;
 42         set $rewrite true;
 43         #设置一个变量名,rewrite,值是true
 44         #来进行判断ip是否是合法ip
 45         if ( $remote_addr = "192.168.60.30" ) {
 46           set $rewrite false;
 47         } 
 48         if ( $rewrite = true ) {
 49           rewrite (.+) /error.html;
 50           #重定向,192.168.60.30/error.html       
 51         }
 52         location = /error.html {
 53          root html;
 54         }

2、在html目录下写一个网页维护中

[root@test3 html]# echo "网页维护中!" > error.html

3、test3结果

4、test4结果

location匹配的优先级

location = 精确

location ~ 正则

location / 一般

location /

重定向

permanent

refriect

break

last

500报错 10次

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ACE Studio的成功经验:从国内到全球的市场拓展

在AI技术飞速发展的今天,音乐创作也正经历着一场前所未有的变革。作为这一变革的前沿代表,ACE Studio无疑引起了广泛关注。本文将通过对时域科技创始人Joe与曲凯的对话,深入探讨ACE Studio的创新理念、市场定位、技术优势以及未来发展方向。 …

一个R包完成单细胞基因集富集分析 (全代码)

singleseqgset是用于单细胞RNA-seq数据的基因集富集分析的软件包。它使用简单的基础统计量(variance inflated Wilcoxon秩和检验)来确定不同cluster中感兴趣的基因集的富集。 Installation library(devtools) install_github("arc85/singleseqgse…

【JavaEE】多线程代码案例(2)

🎏🎏🎏个人主页🎏🎏🎏 🎏🎏🎏JavaEE专栏🎏🎏🎏 🎏🎏🎏上一篇文章:多线程代码案例(1)&a…

花键参数确定的流程是怎么样的?

继续花键的话题,今天跟小伙伴们一同学习一下:渐开线花键的参数确定的一般流程及基本方法。 前面有好几篇介绍了花键的基本参数的概念,包括规格、模数、齿数、压力角等等。以及花键的定心方式,内外花键的配合方式。那么这些参数的…

基于docker轻松部署selenium grid环境

做web自动化的同学都知道selenium grid非常好用,但是环境配置特别麻烦,很多人都躺在了环境搭建。那么有没有更简单的方式呢,答案是肯定的,今天我们就用docker来完成它,希望对大家有帮助。 一、环境准备 准备一台 Linu…

6个步骤实现Postman接口压力测试(建议收藏)

🍅 视频学习:文末有免费的配套视频可观看 🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 这里讲是postman做接口并发测试,基础用法不做赘述 1、第一步接口可以通的情况下点击…

Web应用防火墙用在哪些场景?

WAF是Web Application Firewall的缩写,翻译为“Web应用防火墙”是一种网络安全设备或服务,用于保护Web应用程序免受各种网络攻击和漏洞的影响。 WAF特别设计用于识别和阻止特定于Web应用程序的攻击,例如SQL注入、跨站脚本(XSS)、跨站请求伪造…

2024最新中级会计职称考试全科题库资料。

1.根据消费税法律制度的规定,下列各项中,属于消费税征税范围的是()。 A.汽车轮胎 B.食用酒精 C.铂金首饰 D.体育上用的发令纸 答案:C 解析:选项ABD均不属于消费税的征税范围。 2.甲企业(…

PDF内存如何变小,PDF内存压缩,PDF内存变小怎么调整

在数字化时代,pdf已成为工作、学习和生活中不可或缺的文件格式。它以其跨平台兼容性和安全性受到广大用户的喜爱。然而,随着pdf文件中嵌入的图片、图形和文本内容的增多,文件大小往往会变得相当可观,给文件的传输和存储带来一定的…

2024亚太杯中文赛B题全保姆教程

B题 洪水灾害的数据分析与预测 问题 1. 请分析附件 train.csv 中的数据,分析并可视化上述 20 个指标中,哪 些指标与洪水的发生有着密切的关联?哪些指标与洪水发生的相关性不大?并 分析可能的原因,然后针对洪水的提前预…

Jenkins 下使用 Node 和 Npm(借助 nvm-wrapper 插件)构建前端程序

一、前言 搭建完Jenkins后,如何使用node进行构建前端呢,多个项目会使用的node的多个版本。如何动态指定node的版本进行构建呢。 方案一: 安装多个node版本,然后进行指定。这样比较麻烦。 方案二: 使用Jenkins的nv…

JavaSE (Java基础):面向对象(下)

8.7 多态 什么是多态? 即同一方法可以根据发送对象的不同而采用多种不同的方式。 一个对象的实际类型是确定的,但可以指向对象的引用的类型有很多。在句话我是这样理解的: 在实例中使用方法都是根据他最开始将类实例化最左边的类型来定的&…

基于docker环境及Harbor部署{很简短一点了,耐心看吧}

用到的环境: docker 、nacos、compose、harbor(自行安装 ,以下连接作为参考) nacos:史上最全整合nacos单机模式整合哈哈哈哈哈_nacos 源码启动 单机模式-CSDN博客 docker、compose、harbor:史上最全的整合Harbor安装教程&#…

Qt实现检测软件是否多开

Qt实现检测软件是否多开 在桌面软件开发中,软件通常要设置只允许存在一个进程,像一些熟知的音乐软件,QQ音乐这种。而这些软件在限制只有一个进程的同时,通常还会有双击桌面图标唤醒已运行的后台进程的功能。关于双击桌面唤醒已运…

斯坦福提出首个开源视觉语言动作大模型OpenVLA

OpenVLA:开源视觉语言动作大模型 摘要模型结构训练数据训练设施实验总结和局限性 项目主页 代码链接 论文链接 模型链接 摘要 现有的VLA(Vision-Language-Action )模型具有这些局限性: 1)大多封闭且开放; 2)未能探索高效地为新任务微调VLA的方…

vue3 【提效】使用 CSS 框架 UnoCSS 实用教程

该换种更高效的方式写 CSS 啦&#xff0c;举个例&#xff1a; <div class"flex"> </div>相当于 <div class"flex"> </div> <style> .flex {display: flex; } </style>当然&#xff0c;还有超多强大的功能帮我们提升…

【后端面试题】【中间件】【NoSQL】MongoDB查询过程、ESR规则、覆盖索引的优化

任何中间件的面试说到底都是以高可用、高性能和高并发为主&#xff0c;而高性能和高并发基本是同时存在的。 性能优化一直被看作一个高级面试点&#xff0c;因为只有对原理了解得很透彻的人&#xff0c;在实践中才能找准性能优化的关键点&#xff0c;从而通过各种优化手段解决性…

为什么人员定位系统很有必要性?

人员定位系统在现代社会和企业环境中具有极高的必要性&#xff0c;这主要体现在以下几个方面&#xff1a; 一、安全保障 二、提升效率 三、管理优化 四、增强合规性 综上所述&#xff0c;人员定位系统通过提供实时、准确的位置信息&#xff0c;为企业带来了安全保障、效率提升…

香橙派AIpro实测:YOLOv8便捷检测,算法速度与运行速度结合

香橙派AIpro实测&#xff1a;YOLOv8便捷检测&#xff0c;算法速度与运行速度结合 文章目录 香橙派AIpro实测&#xff1a;YOLOv8便捷检测&#xff0c;算法速度与运行速度结合一、引言二、香橙派AIpro简介三、YOLOv8检测效果3.1 目标检测算法介绍3.1.1 YOLO家族3.1.2 YOLOv8算法理…

500mA、低压差、低噪声、超快、无需旁路电容的CMOS LDO稳压器RT9013

一般描述 RT9013 SOT23-5封装的外观和丝印 RT9013 是一款高性能的 500mA LDO 稳压器&#xff0c;具有极高的 PSRR 和超低压差。非常适合具有苛刻性能和空间要求的便携式射频和无线应用。 RT9013的静态电流低至25μA&#xff0c;进一步延长了电池的使用寿命。RT9013 也适用于低…