阿里云
阿里云多端小程序中小企业获客首选
发表主题 回复主题
  • 6140阅读
  • 0回复

[ECS]Nginx配置及Rewrite规则

级别: 新人
发帖
5
云币
-4
b*Q&CL  
Nginx Rewrite 规则相关指令 [\W&   jOD?|tK&  
相关指令有if,rewrite,set,return,break等,其中最关键的就是rewrite.一个简单的Nginx Rewrite规则语法如下:rewrite ^/b/(.*)\.html /play.php?video=$1 break; m8L    *LB   _2 osV[e  
vL@<l^`$0   iMRwp+$  
1.break指令 jc"sPrv5   Lbb0_-']  
默认值:none ;使用环境server,location,if ; "kP,v&n   L\z~uo3:  
该指令的作用是完成当前的规则集,不再处理rewrite指令。 f- XUto   CQDkFQq-dq  
RxqNgun@   }f7j 8py  
2.if指令 j1;[6XG   {+Cy U!O  
默认值:none ;使用环境:server,location ;}SGJ7   yyy|Pw4:Z  
该指令用于检查一个条件是否符合,如果条件符合,则执行大括号内的语句。If指令不支持嵌套,不支持多个条件&&和||处理。
  • `TPIc   iM 3V=&)  
    A.变量名,错误的值包括:空字符串""或者任何以0开始的字符串
  • bh@CtnO   8Kk(8a&v  
    B.变量比较可以使用"="(表示等于)和"!="(表示不等于)
  • ,,uhEoH   }?v )N).kW  
    C.正则表达式模式匹配可以使用"~*"和"~"符号
  • qj;i03 +@   2Q:+_v  
    D."~"符号表示区分大小写字母的匹配
  • %4LoEm=U   b9dLt6d  
    E."~*"符号表示不区分大小写字母的匹配
  • ?(gha   gt w Q-  
    F."!~"和"!~*"符号的作用刚好和"~"、"~*"相反,表示不匹配
  • vcFR Td   t}tEvh  
    G."-f"和"!-f"用来判断文件是否存在
  • c K\   GF=g<H M  
    H."-d"和"!-d"用来判断目录是否存在
  • Q2    !GWz$   jdJ>9O0A,  
    I."-e"和"!-e"用来判断文件或目录是否存在
  • ;d}>8w&tfy   I?G :p+  
    J."-x"和"!-x"用来判断文件是否为可执行
  • ms0V1`   P\)iZiGc  
    K.部分正则表达式可以在()内,用$1~$9来访问
3*<@PXpK&   >Wg hn:^  
3.return指令 3JGrJ!x   fXQNHZ|4  
语法:return code ;使用环境:server,location,if ; ^y@ W\   2*#|Nj=^  
该指令用于结束规则的执行并返回状态码给客户端。 WOn<;'}M&   R@k&SlL'`  
示例:如果访问的URL以".sh"或".bash"结尾,则返回403状态码location ~ .*\.(sh|bash)?${return 403;} h\[@J rDa   W X6&oy>  
4.rewrite 指令 `D(V_WZ   q;)JISf.  
语法:rewrite regex replacement flag Da    7(jA+   cDH^\-z  
默认值:none ; 使用环境:server,location,if X:UlL"G   e'b(gD}  
该指令根据表达式来重定向URI,或者修改字符串。指令根据配置文件中的顺序来执行。注意重写表达式只对相对路径有效。如果你想配对主机名,你应该使用if语句,示例如下:if( $host ~* www\.(.*) ){set $host_without_www $1;rewrite  ^(.*)$   *,WU?tl&  
JH\:9B+:L   xe&i^+i  
z0rYzn?MR   bhlG,NTP  
rewrite指令的最后一项参数为flag标记,支持flag标记有: #r#[&b   3n}?bY8@5_  
1.last     相当于apache里面的[L]标记,表示rewrite。 > '=QBW    zi`o#+  
2.break本条规则匹配完成后,终止匹配,不再匹配后面的规则。 q\<l"b    z   K~uq,~  
3.redirect  返回302临时重定向,浏览器地址会显示跳转后的URL地址。 r2SZC`Z}-M   #],&>n7'  
4.permanent  返回301永久重定向, 浏览器地址会显示跳转后的URL地址。 fx|d"VF[   3"KCh\\b  
:2KHiT5   x>`%DwoRI  
使用last和break实现URI重写,浏览器地址栏不变。而且两者有细微差别,使用alias指令必须用last标记;使用proxy_pass指令时,需要使用break标记。Last标记在本条rewrite规则执行完毕后,会对其所在server{......}标签重新发起请求,而break标记则在本条规则匹配完成后,终止匹配。 <XLaJ;j   LOV)3{m  
,    ~ 1+MZ=   j^rIH#V   
一般在跟location中(location /{...})或直接在server标签中编写rewrite规则,推荐使用last标记;在非根location中(location /cms/{...}),则使用break。 )!-gT   9\JF`ff_  
发表主题 回复主题
« 返回列表上一主题下一主题

限100 字节
如果您在写长篇帖子又不马上发表,建议存为草稿
 
验证问题: 阿里云官网域名是什么? 正确答案:www.aliyun.com
上一个 下一个
      ×
      全新阿里云开发者社区, 去探索开发者的新世界吧!
      一站式的体验,更多的精彩!
      通过下面领域大门,一起探索新的技术世界吧~ (点击图标进入)