nginx rewrite的4中flag的区别

rewrite可以改下请求的url,改写后可以以重定向的方式返回给调用方, 也可以继续匹配location,这些不同的行为是通过指令最后的flag来区分的

4个flag

  • permanent: 永久重定向,nginx返回301给调用方
  • redirect: 临时重定向,nginx返回302给调用方
  • last: 使用改写后的URL,重新在location上匹配
  • break: 结束指令脚本执行,不再匹配,也不再执行后面的return指令(如果有的的话),直接去root或alias匹配对应的资源,如果不存在则返回404
  • 空: 如果没有设置flag,则会继续执行后面的指令

示例

以下不同的rewrite规则下,访问 /first/file.txt 分别返回什么?

  • 默认的空值
location /first {
    rewrite /first(.*) /second$1;
    return 200 "first!";
}
location /second {
    return 200 "second!";
}

返回 "first!",因为flag为空的时候,会继续执行后面return指令

  • break
location /first {
    rewrite /first(.*) /second$1 break;
    return 200 "first!";
}
location /second {
    return 200 "second!";
}

返回 second目录下的file.txt文件,因为break后就不再匹配,而是去root目录下匹配文件

  • last
location /first {
    rewrite /first(.*) /second$1 last;
    return 200 "first!";
}
location /second {
    return 200 "second!";
}

返回 "second!",因为last使用改写后的url重新匹配,这个时候就会匹配到 location /second

参考

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容