nginx配置与详解4:配置rewrite

rewrite功能就是集合正则表达式和标志位实现url重写和重定向。

rewrite只能放在server{}、location{}、if(){}块中,并且只能对域名后边的出去传递参数外的字符串起作用。

如URL:

http://test.com/proxy/sms/task/querydeleted?page=1&pagesize=10,只对/proxy/sms/task/querydeleted进行重写。 

如果相对域名或参数字符串起作用,可以使用全局变量匹配,也可以使用proxy_pass反向代理。 

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

很多情况下rewrite也会写在location里,它们的执行顺序是:

  • 执行server块的rewrite指令
  • 执行location匹配
  • 执行选定的location中的rewrite指令

 

如果其中某步URI被重写,则重新循环执行1-3,直到找到真实存在的文件;循环超过10次,则返回500 Internal Server Error错误。

 

rewrite规则后边,通常会带有flag标志位:

  • last : 相当于Apache的[L]标记,表示完成rewrite
  • break : 停止执行当前虚拟主机的后续rewrite指令集
  • redirect : 返回 302临时重定向,地址栏会显示跳转后的地址
  • permanent : 返回 301永久重定向,地址栏会显示跳转后的地址

 

last 和 break 区别:

  • last一般写在 server和 if中,而 break一般使用在 location中

last不终止重写后的url匹配,即新的url会再从 server走一遍匹配流程,而 break终止重写后的匹配

  • break和 last都能组织继续执行后面的rewrite指令

 

rewrite常用正则:

  • . :匹配除换行符以外的任意字符
  • ? :重复0次或1次
  • + :重复1次或更多次
  • * :重复0次或更多次
  • d :匹配数字
  • ^ :匹配字符串的开始
  • $ :匹配字符串的介绍
  • {n} :重复n次
  • {n,} :重复n次或更多次
  • [c] :匹配单个字符c
  • [a-z] :匹配a-z小写字母的任意一个

可以使用 ()来进行分组,可以通过 $1的形式来引用。

示例:

 

location /proxy/ {

        proxy_pass http://microloan-notification-web.yxapp.in;

        rewrite /proxy/(.*)$ /$1 break;

}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值