HttpRewriteModule重写模块

概要:

     此模块可以使用正则表达式改变URI,且可以依据变量重定向和选择配置。

      如果此模块的指令放置在server层,他们将在请求的location确定之前执行。如果在选择的location有进一步的重写指令,他们仍然会执行!如果URI更改为location里面执行的指令结果,那么,location又决定了新的URI

这个循环可以重复10次,之后Nginx返回一个500错误。

指令:

break

Syntax:

break

Default:

Context:

server
location
if

Reference:

break

完成当前规则。继续执行当前location内的指令,但是不执行其他重写指令。

实例:

if ($slow) {

  limit_rate  10k;

  break;

}

If

Syntax:

if ( condition ) { ... }

Default:

Context:

server
location

Reference:

if


注意:使用if之前请阅读一下  the if is evil page 并且考虑使用try_files替代. 

判断一个条件是否为真。如果条件为真,大括号里面的戴默就会执行,结果按照随后的配置处理。位于if指令之中的配置是继承与先前的层。

条件可以如下:

变量名;false包括:空字符串(""或者以"0"开始的字符串; 

一组对比的变量使用 =  !=   

正则表达式匹配模式:

~ 执行大小写敏感匹配

~* 执行大小写不敏感匹配 (firefox 匹配FireFox)

!~ and !~* 意为相反的, "不匹配"

· 判断文件是否存在使用 -f or !-f ;

· 判断目录是否存在使用 -d or !-d;

· 判断文件,目录或者符号链接是否存在使用 -e or !-e;

· 判断一个文件是否可执行 -x or !-x.

部分正则表达式可以放在括号里,之后他们的值可以通过$1 $9这几个变量访问。阅读Extracting matches. 

使用示例:

if ($http_user_agent ~ MSIE) {

  rewrite  ^(.*)$  /msie/$1  break;

}

 

if ($http_cookie ~"id=([^;] +)(?:;|$)" ) {

  set  $id  $1;

}

 

if ($request_method = POST ) {

  return 405;

}

 

if ($slow) {

  limit_rate  10k;

}

 

if ($invalid_referer) {

  return   403;

}

 

if ($args ~ post=140){

  rewrite ^ http://example.com/ permanent;

}

内置变量 $invalid_referer的值通过  valid_referers指令赋值. 

return

Syntax:

return code [ text ]
return code URL 
return URL

Default:

Context:

server
location
if

Reference:

return

这个指令结束规则的执行,向客户端返回指定的状态代码。可以使用任何一个 0-999之间的http 返回代码此外非标准代码 444关闭没有发送头部的连接.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值