贵州省建设网站,google排名,企业网站建设总结报告,北京网站建设公司 蓝纤科技 网络服务个人结论: 1.server层ngx_http_rewrite_module模块相关指令按照配置顺序依次执行#xff1b; 2.server层执行完break指令后#xff0c;该层级所有跟ngx_http_rewrite_module模块相关的指令都不再被执行#xff0c;但是不影响其他模块(例如:https://zhuanlan.zhihu.com/p/357…个人结论: 1.server层ngx_http_rewrite_module模块相关指令按照配置顺序依次执行 2.server层执行完break指令后该层级所有跟ngx_http_rewrite_module模块相关的指令都不再被执行但是不影响其他模块(例如:https://zhuanlan.zhihu.com/p/357272929 的例子 location /testbreak {break;return 200 $request_uri;proxy_pass http://127.0.0.1:8080/other;}
,return也属于这块模块,但是之后跟上的proxy_pass 这并不属于这个模块,所以会生效,最终回到/other),但不影响location层ngx_http_rewrite_module模块相关指令的继续执行所以请求处理过程会继续向下 3.location层执行完break指令后当前server所有层级跟ngx_http_rewrite_module模块相关的指令都不再被执行换言之就是最终URI就这吧别再找了nginx根据最终请求路径将请求结果返回给客户端 4.无论在哪个层级执行完return指令后请求处理过程都会立刻终止并将指定的code、重定向URL或响应正文文本返回给客户端。 5.虽然Nginx在循环重写过程中最多是可以执行11次循环但在第11次循环中执行rewrite后会抛500异常所以严格意义上来说正常情况下Nginx请求重写循环过程最多就是10次。强烈建议亲自做下测试10。 6.rewrite regex /xxx break指令与单独break指令的中断效果一样用IF语句满足匹配条件之后,执行rewrite regex /xxx再执行break,估计效果相同。 7.rewrite regex /xxx last指令是执行完重写后立即开始(下一轮)匹配locationserver层或当前location层其它指令不再执行。
例子暂时先这样: server {listen 80;server_name www.cjlnginx.com;root /tmp/cjl;index 1.txt;port_in_redirect off;location /6.txt {rewrite ^ /7.txt;#因为7.txt没有匹配location了,接下来没
有匹配rewrite了,所以虽然没有break但还是定格在7.txt}location /3.txt {rewrite ^ /5.txt;rewrite ^ /6.txt last;#此处如果是break就显示6,last的话,
那么就会重新筛选从头代入location.也就是上面的7.txt.中断了下面的rewrite,如果
这条是最后一条的话(注释下面这条),即使不加last,也会新筛选从头代入location.所
以last的作用,感觉就是结束后续的rewrite模块.rewrite ^ /8.txt; #如果上面有标志,这个8.txt就不会执行,
如果flag不填的话,则会顺序下来.}location /2.txt {rewrite ^ /1.txt;#注意这里会继续到rewrite那了,如果break
直接就是1.txt}rewrite ^(/3.txt)$ /2.txt;#顺序执行下去3-2,2-5,5-2rewrite ^(/1.txt)$ /3.txt last;#break一样的效果,都会进入locat
ion,rewrite ^(/3.txt)$ /4.txt;rewrite ^(/2.txt)$ /5.txt;rewrite ^(/5.txt)$ /2.txt;#如果此处没有被,location /2.txt捕
获或者在末尾加上break,就会死循环.rewrite ^(/6.txt)$ /9.txt break;#rewrite ^(/7.txt)$ /4.txt;#如果打开这个和下面这条,你会发现又
回到rewrite了#rewrite ^(/4.txt)$ /9.txt break;location ~ /6.txt { #这里不会进入,前面有 /6.txt 一直给拦截了
了,所以这里不会执行到rewrite ^ /8.txt;}}
请求http://www.cjlnginx.com/1.txt 和http://www.cjlnginx.com/3.txt 看看结果.就能摸索出来.