Nginx Rewrite详解

这篇具有很好参考价值的文章主要介绍了Nginx Rewrite详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、Rewrite跳转场景

二、Rewrite跳转实现

三、Rewrite实际场景

1.nginx跳转需求的实现方式:

2.rewrite放在server{},if{},location{}段中

3.对域名或参数字符串

四、Rewrite正则表达式

五、Rewrite命令/语法格式

六、Location分类

1. location 大致可以分为三类:

2.location 常用的匹配规则:

七、Location优先级

八、Rewrite和Location比较

1.相同点

2.不同点

3.rewrite会写在location里,执行顺序

九、跳转小案例

十、总结

1.优先级总结:

2.location 匹配 

3.rewrite和location比较

4.实际网站使用中,至少有三个匹配规则定义:


一、Rewrite跳转场景

URL看起来更规范、合理

企业会将动态URL地址伪装成静态地址提供服务

网址换新域名后,让旧的访问跳转到新的域名上

服务端某些业务调整

ps:  

URL:就是一个具体路径/位置

URI:指的是一个拥有相同类型/特性的对象集合

URN:用名称定位

二、Rewrite跳转实现

通过ngx_http_rewrite_module这个模块来实现,而这个模块内有四部分来组成:

Nignx:支持URL重写、支持if条件判断,但不支持else

跳转:循环最多可以执行10次,超过后nginx将返回500错误

PCRE支持:rewrite使用nginx全局变量或自己设置的变量,结合正则表达式和标志位实现URL重写以及重定向

重写 模块:set指令

三、Rewrite实际场景

1.nginx跳转需求的实现方式:

使用rewrite进行匹配跳转

使用if匹配全局变量后跳转

使用location匹配再跳转

2.rewrite放在server{},if{},location{}段中

location只对域名后面的出去传递参数外的字符串起作用

3.对域名或参数字符串

使用if全局变量匹配

使用proxy_pass反向代理

四、Rewrite正则表达式

字符 说明
^ 匹配输入字符串的起始位置
& 匹配输入字符串的结束位置
* 匹配前面的字符零次或多次
+ 匹配前面的字符一次或多次
匹配前面的字符零次或一次
. 匹配除“\n”之外的任何单个字符
\ 将后面接着的字符标记为一个特殊字符或一个原义字符或一个向后引用
\d 匹配纯数字
{n}  重复 n 次
{n,}  重复 n 次或更多次
{n,m}  重复 n 到 m 次
[ ] 定义匹配的字符范围
[c]

匹配单个字符 c

[a-z] 匹配 a-z 小写字母的任意一个
[a-zA-Z0-9] 匹配所有大小写字母或数字
( ) 表达式的开始和结束位置
| 或运算符

五、Rewrite命令/语法格式

nginx rewrite,nginx,服务器,mysql 

 flag标记说明

标记 说明
last 相当于Apache的[L]标记,表示完成rewrite
break 本条规则匹配完成即终止,不再匹配后面的任何规则
redirect 返回302临时重定向,浏览器地址会显示跳转后的URL地址,爬虫不会更新URL
permanent 返回301永久重定向,浏览器地址会显示跳转后的URL地址,爬虫更新URL

last :在本条规则完成后,继续向下匹配新的location URL规则,一般用在server和if当中

break :和last类似,但是不会重新发起一次处理过程,而是直接返回处理结果,一般用在location当中

redirect :该标记表示当前规则匹配成功后立即进行重定向操作(临时)

permanent :该标记和redirect类似,永久性重定向

set :表示当前规则匹配成功后设置一个变量,并把变量传入下一条规则

六、Location分类

1. location 大致可以分为三类:

精准匹配:location = / {...}
一般匹配:location / {...} 
正则匹配:location ~ / {...}

2.location 常用的匹配规则:

标记 说明
= 进行普通字符精确匹配,也就是完全匹配
^~ 表示普通字符匹配,使用前缀匹配
~ 区分大小写的匹配
~* 不区分大小写的匹配
!~ 区分大小写的匹配取非
!~* 不区分大小写的匹配取非
@ 定义一个命名的location,使用在内部定向时

七、Location优先级

首先精确匹配 =
其次前缀匹配 ^~
其次是按文件中顺序的正则匹配 ~或~*
然后匹配不带任何修饰的前缀匹配
最后是交给 / 通用匹配
    

八、Rewrite和Location比较

1.相同点

都能实现跳转

2.不同点

rewrite是在同一域名内更改获取资源的路径

location是对一类路径做控制访问或反向代理,还可以proxy_pass到其他机器

3.rewrite会写在location里,执行顺序

执行server块里面的rewrite指令

执行location匹配

执行选定的location中的rewrite指令

九、跳转小案例

基于域名的跳转:

#修改配置文件

nginx rewrite,nginx,服务器,mysql

nginx rewrite,nginx,服务器,mysql

重启服务

nginx rewrite,nginx,服务器,mysql

浏览器模拟访问www.kgc.com会跳转到www.benet.com

nginx rewrite,nginx,服务器,mysql

模拟访问www.kgc.com/test会跳转到www.benet.com/test,查看元素可以看到返回301,实现了永久重定向跳转,而且域名后的参数也正常跳转。

nginx rewrite,nginx,服务器,mysql

十、总结

1.优先级总结:

(location = 完整路径) > (location ^~ 路径) > (location ~,~* 正则顺序) > (location 部分起始路径) > (location /)

2.location 匹配 

首先看 优先级:精确>前缀>正则>一般>通用
优先级相同:正则看上下顺序,上面的优先;一般匹配看长度,最长匹配的优先
精确、前缀、正则、一般 都没有匹配到,最后再看通用匹配  一般匹配

3.rewrite和location比较

rewrite:改写访问的URL路径  (被访问的HTML/HTM/CSS文件)

location:对一类地址进行权限控制(认证控制)+ 跳转(跨服务器进行URL跳转)

4.实际网站使用中,至少有三个匹配规则定义:

第一个必选规则

直接匹配网站根,通过域名访问网站首页比较频繁,使用这个会加速处理,比如说官网。可以是一个静态首页,也可以直接转发给后端应用服务器

第二个必选规则

处理静态文件请求,这是nginx作为http服务器的强项有两种配置模式,目录匹配或后缀匹配,任选其一或搭配使用

第三个规则

通用规则,比如用来转发带.php、.jsp后缀的动态请求到后端应用服务器非静态文件请求就默认是动态请求文章来源地址https://www.toymoban.com/news/detail-728248.html

到了这里,关于Nginx Rewrite详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Nginx快速入门:return、rewrite重定向、重写详解(六)

    我们在日常的生产过程中,常常有需要重定向转发的需求,比如企业更换了域名,但又要保证之前的域名能访问,这就需要做重定向的跳转。 我们在之前的章节中学习了Nginx的负载均衡、各类转发代理配置,今天继续来补充关于转发的的最后一个环节——重定向(或称跳转)

    2024年02月20日
    浏览(40)
  • nginx rewrite 用法,用rewrite去除URL中的特定参数

    日常服务中经常会用Nginx做一层代理转发,把Nginx当做前置机 比如,以下配置: 这里的rewrite 就是为了去除URL中的/apis,实际的后端api中是没有这个参数的,但是为了做到在Nginx转发请求,前端需要加上这个参数,以便于区别 比如前端的请求地址是 那么实际上经过Nginx转发后请求

    2024年02月05日
    浏览(42)
  • Nginx重写功能rewrite

    目录 一、Rewrite简单介绍 1、Rewrite的概述 2、Rewrite跳转场景 3、URI、URL、URN 4、Rewrite跳转实现 5、Rewrite实际场景  6、Nginx正则表达式 7、Rewrite执行顺序 二、location简单介绍 1、location的分类 2、location 常用的匹配规则 3、location的优先级 4、location示例说明 5、实际网站使用中,至

    2024年02月08日
    浏览(44)
  • nginx rewrite(重定向)

    目录 一、什么是rewrite 二、rewrite使用场景 三、rewrite配置语法 四、常用的nginx正则表达式 五、nginx 配置文件里 location 项 1、localtion 作用 2、location 可以分为三类 3、location 的常用匹配规则 4、location 的 优先级与匹配规则 5、location 示例说明 六、案例 七、rewrite总结        R

    2024年02月11日
    浏览(39)
  • 8.Nginx Rewrite

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

    2024年02月08日
    浏览(36)
  • Nginx rewrite

    目录 一、location 1.location 匹配规则介绍 2. 实际网站使用中匹配规则 2.1第一个必选规则 2.2第二个必选规则是处理静态文件请求,这是nginx作为http服务器的强项 2.3第三个规则就是通用规则 3.location 匹配规则演示 2.1一般前缀匹配 2.2正则匹配 2.3正则前缀匹配 2.4精准匹配 二、re

    2024年02月07日
    浏览(31)
  • Nginx Rewrite的应用

    目录 一、Nginx Rewrite 二、Rewrite的功能  1.Rewrite  跳转场景 2.Rewrite  跳转实现 3.Rewrite  实际场景 4.Rewrite  正则表达式 5.Rewrite  命令/语法格式 6.location  分类 7.location  优先级 8.Rewrite和location比较 9.根据以上了解,小案例来操作实现我们在企业跳转案例 三、Rewrite  跳转场景

    2024年02月12日
    浏览(51)
  • 【Nginx】rewrite简单使用

    没有对正式的rewrite进行了解,为了能快速了解它是干嘛怎么用,找了一些有例子的博客进行简单学习了一下;由于每次看的间隔有点大,老忘记,这回专门写个超级快速理解的例子。 PS:下面的解释可能会不太对,大佬们可以分享一下正确说法;如果用法都有错了,请诸位指

    2024年02月15日
    浏览(39)
  • Nginx Rewrite(重写跳转)

    rewrite功能: 使用nginx提供的全局变量或自己设置的变量,结合正则表达式和标记位实现URL重写以及重定向。 比如: 更换域名后需要保持旧的域名能跳转到新的域名上、某网页发生改变需要跳转到新的页面、网站防盗链等等需求。 rewrite只能放在server{},location{},if{}中,并且默

    2024年02月03日
    浏览(37)
  • Nginx Rewrite 重写跳转

    rewrite功能: 使用nginx提供的全局变量或自己设置的变量,结合正则表达式和标记位实现URL重写以及重定向。 比如: 更换域名后需要保持旧的域名能跳转到新的域名上、某网页发生改变需要跳转到新的页面、网站防盗链等等需求。 rewrite只能放在server{},location{},if{}中,并且默

    2024年02月11日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包