Nginx跳转模块——location与rewrite

一、location

1、location作用

用于匹配uri(文件、图片、视频)

uri:统一资源标识符。是一种字符串标识,用于标识抽象的或物理资源文件、图片、视频

2、locatin分类

1、精准匹配:location = / {...}

2、一般匹配:location / {...}

3、正则匹配:location ~ / {...}

3、locating常用的匹配规则

  1. =:进行普通字符精确匹配,也就是完全匹配

  2. ^~:表示普通字符匹配,使用前缀匹配,如果匹配成功,就不再匹配其他的location

  3. ~:区分大小写的匹配

  4. ~*:不区分大小写的匹配

  5. ~$:结束位置

  6. !~:区分大小写的匹配取非

  7. !~*:不区分大小写的匹配取非

4、location匹配优先级

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

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

5、生产中location匹配

在实际网站中使用的匹配规则至少有三个匹配规则

#第一个必选规则:
location = / {} #直接匹配根网站,通过域名访问网站首页最多 

#第二个规则:
location ^~ /static/ {} #处理静态文件的请求,目录匹配

#第三个规则:
location ~* \.(gif|jpg|png|css) #用于匹配图片
 
#第四个规则
location / {  #用于指定代理,反向代理,转发动态请求。将请求转发到后端

二、rewrite

1、reweite的作用

rewrite作用就是,使用nginx提供的全局变量或自己设置的变量,结合正则表达式和标志位实现url重写以及重定向。

2、rewrite跳转实现

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

  • 跳转:从一个location跳转到另一个location,循环最多可以执行10次,超过后nginx将返回500错误

3、rewrite执行顺序如下

  1. 执行 server 块里面的 rewrite 指令。
  2. 执行 location 匹配。
  3. 如果location当中还有rewrite,继续执行,不停的执行rewrite,然后进入死循环,连续10次之后报错,显示状态码500

4、rewrite语法

rewrite <regex> <replacement> [flag]

  • regex :表示正则匹配规则。
  • replacement :表示跳转后的内容。
  • flag :表示 rewrite 支持的 flag 标记。

5、flag标记说明

  • permanent :返回301永久重定向,浏览器地址栏会显示跳转后的URL地址。
  • redirect :返回302临时重定向,浏览器地址会显示跳转后的URL地址。
  • break :本条规则匹配完成即终止,不再匹配后面的任何规则,且URI不会发生变化。
  • last :本条规则匹配完成后,继续向下匹配新的location URI规则。

5.1 permanent

 5.2 redirect

5.3  break

5.4  last

5.4.1 死循环示例:

验证:访问192.168.247.23/test1/ 

 

 5.4.2 跳转test2:

 验证:访问192.168.247.23/test1/

 5.4.3 跳转test1

验证:访问192.168.247.23/test2/ 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值