关于if指令的疑惑

来源:5-10 rewrite模块中if指令

乃好

2020-10-15

老师您好

当我使用if指令时

location / {
                if ( $uri = "/images/" ){
                        rewrite (.*) /pics/ break;
                }
        }

访问是正常的:

http://img.mukewang.com/szimg/5f88518e0967b81610070277.jpg


当我去掉if指令,会报错500

location / {             
           rewrite (.*) /pics/ break;
        }

http://img1.sycdn.imooc.com/szimg/5f88520709dbdfeb10090345.jpg

error.log日志

2020/10/12 12:37:35 [error] 32389#0: *66 rewrite or internal redirection cycle while internally redirecting to "/pics/index.html", client: 192.168.1.219, server: localhost, request: "GET /images/ HTTP/1.1", host: "192.168.1.105:8080"


这我就想不通了,两次发送请求的url一模一样,就只是去掉了if判断,相当于不用判断也执行代码,怎么就会报错呢?

写回答

1回答

酷田

2020-11-13

这个问题的原因在于你访问的url结尾是带/,/images/,结尾有无斜线是有区别的,可以参考这个文档:https://blog.csdn.net/u010509052/article/details/105455813

如有疑问再继续提出哈    

NGINX这些细节不容易理解

0
0

Nginx体系化深度精讲 给开发和运维的刚需课程

快速精通Nginx1.17 ,体系与深度并存,轻松搞定企业级痛点问题

670 学习 · 171 问题

查看课程