nginx中return和rewrite指令同时存在先执行顺序哪个
前文
如果return指令跟rewrite指令同时存在先执行哪个呢?
场景示例
模拟数据
server {
location /images {
rewrite /images/(.*)$ /pic/$1 last;
return 200 "return 200 in /images";
}
location /pic {
rewrite /pic/(.*) /photos/$1;
return 200 "return 200 in /pic";
}
location /photos {
return 200 "return 200 in /photos";
}
}
分别在/images、/pic、/photos的location段增加return 返回200状态码并输出字符串
流程
- 访问
xxx.com/images/index.html,会进入/images的location段中, - 在
/images中,进行rewrite指令,将images/index.html重写到/pic/的index.html,并且有last 值。 - 遇到
last值,会重新触发请求。在server段找/pic的location段。 - 匹配到location的
/pic后 ,又重写,将/pic的index.html重定向到/photos目录下的index.html。(注意/pic段没有加last值,意味着流程顺序执行!) - 没有加flag标签。所以
/pic段中依然执行下面的命令,会走retrun 200 "return 200 in /pic"之后就中断。


场景2
如果在/pic段中增加flag的break,会执行什么?

当遇到break,会重写找/photos段,不会执行return 200 in /pic,

注意事项
如果当你直接访问xxx.com/photos/index.html, 但是又有return指令, 会优先执行return指令 , 并不会返回photos/index.html的页面,直接返回return结果给你。
如果没有return指令才会找目录对应下的有没有index.html文件。

总结
到此这篇关于nginx中return和rewrite指令同时存在先执行顺序哪个的文章就介绍到这了,更多相关nginx中return和rewrite指令执行顺序内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Nginx访问日志access_log配置及信息详解(推荐)
当你设置日志级别成debug,如果你在调试一个在线的高流量网站的话,你的错误日志可能会记录每个请求的很多消息,这样会变得毫无意义,下面小编给大家介绍Nginx访问日志access_log配置及信息详解,感兴趣的朋友跟随小编一起看看吧2024-04-04
Nginx 504 Gateway Time-out的两种最新解决方案
大家在访问网站的时候通常会遇到502错误、404错误等,很少会遇到504错误,但是在我们去访问大流量或者内容数据量较多的网站时,打开网页偶尔就会出现504 gateway time-out,这篇文章主要给大家介绍了关于Nginx 504 Gateway Time-out的两种解决方案,需要的朋友可以参考下2022-08-08


最新评论