Nginx Rewrite跳转

本文详细介绍了Nginx的Rewrite功能,包括Rewrite跳转的场景、实现方式和实际应用。通过讲解正则表达式、Rewrite命令及location的匹配优先级,阐述了如何在不同场景下进行URL重写和跳转,如基于域名、客户端IP、旧新域名、参数匹配和URL请求的跳转策略。
摘要由CSDN通过智能技术生成

Nginx Rewrite概述

Rewrite跳转场景

  • URL看起来更规范、合理
  • 企业会将动态url地址伪装成静态地址提供服务
  • 网址换新域名后,让旧的访问跳转到新的域名上
  • 服务端某些业务调整

Rewrite跳转实现

  • nginx-----支持url重写、支持if条件判断,但不支持else
  • 跳转------循环最多可以执行10次,超过后nginx将返回500代码错误
  • rewrite------使用nginx’全局变量或自己设置的变量,结合正则表达式和标志位实现url重写以及重定

Rewrite实际场景

nginx跳转需求的实现方式

  • 使用rewrite进行匹配跳转
  • 使用if匹配全局变量后跳转
  • 使用location匹配再跳转
    rewrite放在 server{},if{},location{}段中
    对域名或参数字符串
  • 使用if全局变量匹配
  • 使用proxy_pass反向代理

Nginx正则表达式

常用的正则表达式元字符

在这里插入图片描述

Rewrite命令

语法

在这里插入图片描述

last 和 break 比较

ZW5size_16,color_FFFFFF,t_70#pic_center)

location分类

分类、正则匹配的常用表达式

在这里插入图片描述

location优先级

相同类型的表达式,字符串长的会优先匹配
按优先级排列

  • = 类型
  • ^~ 类型表达式
  • 正则表达式(和*)类型
  • 常规字符串匹配类型,按前缀匹配
  • 通用匹配(/),如果没有其他匹配,任何请求都会匹配到

location优先级的示例
在这里插入图片描述
在这里插入图片描述

location优先级规则

匹配某个具体文件

  • (location = 完整路径)> (location ^~ 完整路径)> (location ~* 完整路径) > (location ~ 完整路径) > (location 完整路径) > (location /)
    用目录做匹配访问某个文件
  • (location = 目录)> (location ^~ 目录/)> (location ~ 目录) > (location ~* 目录) > (location 目录) > (location /)

比较rewrite 和location

相同点:都能实现跳转
不同点:

  • rewrite是在同一域名内更改获取资源的路径
  • location是对一类路径做控制访问或反向代理,还可以proxy_pass到其他机器
    rewrite会写在location里,执行顺序
  • 执行server块里面的rewrite指令
  • 执行location匹配
  • 执行选定的location中的rewrite指令

应用场景测试

基于域名的跳转

公司旧域名www.51xit.top,因业务需求有变更,需要使用新域名www.52xit.top代替

  • 不能废除旧域名
  • 从旧域名跳转到新域名,且保持其参数不变在windows里的hosts文件中做映射关系

246.png#pic_center)

#先另起一台服务器20.0.0.12,做一个测试网页
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值