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 + Tomcat 反向代理 负载均衡 集群 部署指南
Nginx是一种服务器软件,也是一种高性能的http和反向代理服务器,本篇文章主要介绍了Nginx + Tomcat 反向代理 负载均衡 集群 部署指南,有兴趣的可以了解一下。2016-12-12Nginx应对Permission denied和File not found的配置
这篇文章主要介绍了Nginx应对Permission denied和File not found的错误配置,文中介绍了两个PHP程序使用时出现相关问题后的解决案例,需要的朋友可以参考下2015-12-12Prometheus监控实战篇Nginx、Hbase操作详解
这篇文章主要介绍了Prometheus监控实战篇Nginx、Hbase,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2022-02-02Nginx中worker connections问题的解决方法
这篇文章主要介绍了Nginx中worker connections问题的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2017-05-05
最新评论