前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >nginx rewrite指令

nginx rewrite指令

作者头像
用户5640963
发布2019-07-26 10:33:23
9260
发布2019-07-26 10:33:23
举报
文章被收录于专栏:卯金刀GG卯金刀GG卯金刀GG

语法:rewrite regex replacement [flag]; 默认值:无 作用域:server,location,if 如果一个URI匹配指定的正则表达式regex,URI就按照replacement重写。 rewrite按配置文件中出现的顺序执行。flags标志可以停止/继续处理。 如果replacement以”http://”或”https://”开始,将不再继续处理,这个重定向将返回给客户端。 flag可以是如下参数: last 停止处理后续rewrite指令集,然后对当前重写的新URI在rewrite指令集上重新查找。 break 停止处理后续rewrite指令集,并不在重新查找。 redirect 如果replacement不是以http:// 或https://开始,返回302临时重定向 permant 返回永久重定向的HTTP状态301 ※原有的url支持正则 重写的url不支持正则 最终完整的重定向URL包括请求scheme(http://,https://等),请求的server_name_in_redirect和 port_in_redirec三部分,说白了也就是http协议 域名 端口三部分组成。

示例如下:

location /break/ {

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

return 402;

}

location /last/ {

rewrite ^/last/(.*) /test/$1 last;

return 403;

}

location /test/ {

return 508;

}

请求: http://domain/break/* 返回:404

请求: http://domain/last/*

返回:508

原因:根据上述内容,break与last都停止处理后续rewrite指令集,不同之处在与last会重新发起新的请求,而break不会。当请求break时,如匹配内容存在的话,可以直接请求成功,返回200;而如果请求内容不存在,则返回404。当请求为last的时候,会对重写的新uri重新发起请求,如上例则返回508。

总结:last与break都停止处理后续rewrite指令集,最大的不同是,last会重新发起一个新请求,并重新匹配location。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档