nginx的匹配及重定向

一、nginx的匹配:

nginx中location的优先级和匹配方式:

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

2.正则匹配:location ^~

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

~区分大小写的匹配

~* 不区分大小写

!~:区分大小写取反

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

3.一般匹配:location / 字符串

4.location的优先级:精确匹配 > 正则匹配 > 区分大小写 > 一般匹配

5.实际网站中的使用规则:

第一个:网站的首页:

location = /{ 

 root html;

 index    index.html  index.html  index.php;

}

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

location ^~ /static {

root/web/stsatic/;

index    index.html  index.html  index.php;

}

location ~*\. (ipg.gif | ipeg |  cess)$ {

root/web/picturs/;

index    index.html  index.html  index.php;

}:访问图片或着是指定的后缀面

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

location / {

proxy_pass

}: 转发后端请求和负载均衡

练习:

1、http://www.example.com/gallery/images/cat.png

A.location /gallery { }
B.location ^~* /.(png|jpg)$ { }
C.location = /gallery/images { }
D.location / { }
选择:B

解析:

A,一般匹配,只能匹配到gallery目录下面的文件

B,匹配的是/目录下面,png结尾的文件

C,精确匹配要完整路径,/gallery/images/cat.png

D,一般匹配匹配所有

2.如果访问/abcd 会匹配到哪个config?
A.location ~ /abc { }
B.location /abc { }
C.location ^~ /abc { }
选择:C

解析:

正则匹配,能匹配到,但是优先级没有C高
是匹配/abc下面的文件,匹配不了/abcd目录下面

二、rewrite重定向:就是把当前访问的页面跳转到其它页面。

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

      2.nginx的变量

      $uri  客户端请求的uri地址 

      $host:请求的主机名

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

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

     $remote_addr:客户端的IP地址

     $remote_port:客户端的端口号

     $server_addr:服务端的IP地址

     $server_port:服务端的端口号

     $request_method:获得客户端请求的方法

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

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

     X-Real-!R: 客户端真实的ip地址。
     proxy_set _header X-Real-IP $remote addr 加上这一字段,客户端的真实ip地址就会传递给后端服务器。

  3.flag标志位:

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

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

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

last:重定向,但是会继续向下匹配其它的location规则, 在重定向的过程中,使用了last方式进行重定向,但是,没有结束语,陷入了死循环,nginx会自动循环10次,last匹配最多只能执行10次,超过10次没有结束,就会停止,报错500

4.rewrite的执行顺序:

server模块的rewrite优先级最高

匹配location的规则

执行选定的location规则

5.rewrite的语法

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

三、实验:

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

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

 

 

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

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

相关文章

第十四届蓝桥杯省赛C++B组G题【子串简写】题解(AC)

题目大意 给定字符串 s s s,字符 a , b a, b a,b,问字符串 s s s 中有多少个 a a a 开头 b b b 结尾的子串。 解题思路 20pts 使用二重循环枚举左端点和右端点,判断是否为 a a a 开头 b b b 结尾的字符串,是则答案加一…

【74CH160组成60进制0-59】2021-11-22

缘由60进制计数 到达60后显示ff-嵌入式-CSDN问答 缘由《数电》用两片74160接成29进制计数器应该怎么接呢?-嵌入式-CSDN问答

Gitlab Fork Workflow(协作工作流)

Gitlab Fork WorkFlow(协作工作流) Fork WorkFlow用于团队间的协作开发。在开发过程中,我们都需要将最新修改的代码合并到代码库上,在代码合并之前,为了保证代码符合上传要求(符合需求、代码规范等&#xf…

【MySQL基础篇】多表查询

1、多表关系 概述:项目开发中,在进行数据库表结构操作设计时,会根据业务需求及业务模板之间的关系,分析并设计表结构,由于业务之间相互关联,所以各个表结构之间也存在着各种联系,基本上分为三种…

Windows如何查看端口是否占用,并结束端口进程

需求与问题:前后端配置了跨域操作,但是仍然报错,可以考虑端口被两个程序占用,找不到正确端口或者后端接口书写是否规范,特别是利用Python Flask书写时要保证缩进是否正确! Windows操作系统中,查…

实验五 图像增强—空域滤波

一、实验目的 了解图像平滑滤波器(均值滤波和中值滤波)和图像锐化算子(Sobel算子、Prewitt算子、Laplacian算子)在工程领域中的应用;理解图像平滑滤波器和图像锐化算子的工程应用范围;掌握图像平滑滤波器和…

Winform中使用HttpClient实现调用http的post接口并设置传参content-type为application/json示例

场景 Winform中怎样使用HttpClient调用http的get和post接口并将接口返回json数据解析为实体类: Winform中怎样使用HttpClient调用http的get和post接口并将接口返回json数据解析为实体类_winform解析json-CSDN博客 上面使用HttpClient调用post接口时使用的HttpCon…

SQL-DCL(三)

一.DCL介绍 DCL英文全称是Data Control Language(数据库控制语言),用来管理数据库 用户,控制数据库的访问权限。 二.两个方面 1.数据库可以由那些用户访问 2.可以访问那些内容 三.DCL-管理用户 1.查询用户 USE mysql SELECT * FROM user 2.创建用户 CREATE USER…

k8s 部署 springboot 项目内存持续增长问题分析解决

写在前面 工作中遇到,请教公司前辈解决,简单整理记忆博文内容涉及一次 GC 问题的分析以及解决理解不足小伙伴帮忙指正 😃,生活加油 99%的焦虑都来自于虚度时间和没有好好做事,所以唯一的解决办法就是行动起来,认真做完…

Appium adb 获取appActivity

方法一(最简单有效的方法) 通过cmd命令,前提是先打开手机中你要获取包名的APP adb devices -l 获取连接设备详细信息 adb shell dumpsys activity | grep mFocusedActivity 有时获取到的不是真实的Activity 方法二 adb shell monkey -p …

从0-1实现一个前端脚手架

https://gitee.com/childe-jia/kfc-cli.git gitee完整地址 介绍 为什么需要脚手架? 脚手架本质就是一个工具,作用是能够让使用者专注于写代码,它可以让我们只用一个命令就生成一个已经配置好的项目,而不用我们再花时间去配置和安…

【排序算法】—— 快速排序

快速排序的原理是交换排序,其中qsort函数用的排序原理就是快速排序,它是一种效率较高的不稳定函数,时间复杂度为O(N*longN),接下来就来学习一下快速排序。 一、快速排序思路 1.整体思路 以升序排序为例: (1)、首先随…

CC工具箱使用指南:【相交占比分析】

一、简介 需求场景如下,有【待分析地块】和【面积占比参考】2个图层。2个图层之间存在空间上的重叠。工具的目的是为了分析出【待分析地块】的每1个图斑中,和【面积占比参考】相交的面积,以及和总面积的占比。 举一个应用场景为例&#xff0…

Idea新增Module报错:sdk ‘1.8‘ type ‘JavaSDK‘ is not registered in ProjectJdkTable

文章目录 一,创建Module报错二,原因分析三,解决方案1,点击上图的加号,把JDK8添加进来即可2,点击左侧[Project],直接设置SDK为JDK8 四,配置检查与验证 一,创建Module报错 …

【Linux】:程序地址空间

朋友们、伙计们,我们又见面了,本期来给大家解读一下有关Linux程序地址空间的相关知识点,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! C 语 言 专 栏:C语言:从…

PingCAP 成为全球数据库管理系统市场增速最快的厂商

近日,Gartner 发布的《Market Share Analysis: Database Management Systems, Worldwide, 2023》(2024 年 6 月)报告显示:“2023 年全球数据库管理系统(DBMS)市场的增长率为 13.4%,略低于去年的…

LLM4Decompile——专门用于反编译的大规模语言模型

概述 论文地址:https://arxiv.org/abs/2403.05286 反编译是一种将已编译的机器语言或字节码转换回原始高级编程语言的技术。该技术用于分析软件的内部工作原理,尤其是在没有源代码的情况下;Ghidra 和 IDA Pro 等专用工具已经开发出来&#…

学习笔记——动态路由——OSPF聚合(汇总)

十一、OSPF聚合(汇总) 1、路由聚合(汇总) 路由汇总是一种重要的思想,在大型的项目中是必须考虑的一个重点事项。随着网络的规模越来越大,网络中的设备所需维护的路由表项也就会越来越多,路由表的规模也就会逐渐变大,而路由表是需…

【TB作品】51单片机 Proteus仿真 超声波LCD1602ADC0832 身高体重测量仪

00024 超声波LCD1602ADC0832 实验报告:基于51单片机的身高体重测量仪设计 背景介绍 本实验设计并实现了一个基于51单片机的身高体重测量仪。该系统利用超声波传感器测量高度,通过ADC0832模数转换芯片获取重量数据,并使用LCD1602显示屏显示…

系统测试-测试方法学习

目录 (1)等价类 (2)边界值 (3)正交:(只用于确定排列组合,不确定具体内容) (4)判定表法 (5)流程分析法 (6&#xff0…