当前位置: 首页 > news >正文

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.lryc.cn/news/391924.html

相关文章:

  • 云计算【第一阶段(23)】Linux系统安全及应用
  • YUM——简介、安装(Ubuntu22.04)
  • Java面向对象练习(4.文字格斗游戏)(2024.7.4)
  • Python获取QQ音乐歌单歌曲
  • Linux系统部署MongoDB开源文档型数据库并实现无公网IP远程访问
  • WPF Menu实现快捷键操作
  • VSCode常用的一些插件
  • OV通配符证书用于什么单位
  • 【数据结构】06.栈队列
  • 完全理解C语言函数
  • 性能测试:JMeter与Gatling的高级配置
  • Linux 软件管理
  • 五.核心动画 - 图层的变换(平移,缩放,旋转,3D变化)
  • Linux系统编程——线程基本概念
  • 【HALCON】如何实现hw窗口自适应相机拍照成像的大小
  • 【Spring cloud】 认识微服务
  • 一个pdf分割成多个pdf,一个pdf分成多个pdf
  • rtsp client c++
  • 实现好友关注功能的Feed流设计
  • 【STM32修改串口波特率】
  • 印章谁在管、谁用了、用在哪?契约锁让您打开手机一看便知
  • [C++初阶]vector的初步理解
  • 【等保2.0是什么意思?等保2.0的基本要求有哪些? 】
  • VMware中的三种虚拟网络模式
  • 深度学习基准模型Transformer
  • 如何实现公网环境远程连接本地局域网宝塔FTP服务远程管理文件
  • dledger原理源码分析系列(一)-架构,核心组件和rpc组件
  • Github 2024-07-05开源项目日报 Top10
  • WHAT - React useEffect 依赖的 Object.is
  • 【Java EE】Spring IOCDI