nginx rewrite的break于last区别
示例nginx配置
location /test/break { # break测试 location1
rewrite ^.*/test(.*)$ "/here" break;
}
location /test/last { # last测试 location2
rewrite ^.*/test(.*)$ "/here" last;
}
location /here { # 正常地址 location3
default_type text/html;
return 200 "<h1>ok</h1>";
}
1.首先测试下break, 请求/test/break,结果如下图
请求/test/break 匹配到location1,然后地址重写为/here,返回404,表示没有再次匹配location
2.测试last, 请求/test/last,结果如下图
请求/test/break 匹配到location2,然后地址重写为/here,正常返回ok页面,表示重写后又再次匹配所有location
总结
break表示重写后停止不再匹配,last表示重写后跳到server块再次用重写后的地址匹配
用途
1.break
一般用于接口重定向,例如将http://127.0.0.1/down/123.xls...://192.168.0.1:8080/file/123.xls(解决跨域下载)
location /down {
rewrite ^/down(.*)$ "http://192.168.0.1:8080/file$1" break;
}
2.last
用于请求路径发生改变的常规需求,例如将http://127.0.0.1/request/getlist 放在了对应 http://127.0.0.1/api/getlist
location /request {
rewrite ^/request(.*)$ "/api" last;
}
location /api {
default_type Application/json;
return 200 '{"code":0,data:[1,2,3]}';
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。