如果文件不存在
先判断是否制定类型 执行跳转 if(uri ) 其他不存在的 执行其他事务
好像这样不行
1 alexliux 2020-01-11 12:18:44 +08:00 via Android 规则长的优先 |
![]() | 2 xiri 2020-01-11 12:46:55 +08:00 不是,有专门的优先级的,好象是正则方式匹配的优先级最高,/的优先级最低(不保证正确性),中间还有好多类 |
![]() | 3 wd 2020-01-11 12:49:31 +08:00 via iPhone 搜索下 why nginx if is evil |
![]() | 4 xmlf 2020-01-11 12:54:25 +08:00 via Android 我遇到 deny IP 段竟然不起作用的情况。实验自己的 ip 段没问题。我也郁闷死了! |
5 hcymk2 2020-01-11 13:39:57 +08:00 ![]() agentzh 的 Nginx 教程 |
![]() | 7 adoal 2020-01-11 19:21:34 +08:00 via iPhone nginx 配置语法是描述式的,不是过程式的 |
![]() | 8 kidlj 2020-01-11 19:59:15 +08:00 if 属于 rewrite module,rewrite module 优先级高。看官方文档,英文的。 |
9 bobuick 2020-01-11 20:52:40 +08:00 ngx 的 parser 是分几个阶段的,不同的 direct 写在不同位置处在的 parser 阶段不一样,并不是完全按书写顺序来定的,而是看 parser 阶段。 |
![]() | 10 Citrus 2020-01-11 21:47:13 +08:00 新手大概率会犯的错误:认为 Nginx 配置文件是并行的。 建议去看春哥的 Nginx 教程,Nginx 处理请求是有生命周期的。实际上每一个不同的配置是在不同的生命周期里执行的。靠前的生命周期中的配置项就算是写到最末尾,也是优先执行的。 比如: ``` location /test { set $a 1; echo $a; set $a 2; echo $a; } ``` 实际输出的是两个 2,而不是一个 1 一个 2。因为 set 是 rewrite 阶段执行,echo 是 content 阶段执行,因此就算你是交叉写的,第一个 echo 也不会会比第二个 set 先执行。 |
![]() | 11 loading 2020-01-11 22:00:23 +08:00 via Android 一般路由地址也是深度优先的 |
![]() | 12 msg7086 2020-01-12 02:02:50 +08:00 via Android 不是顺序执行的。倒不如说这是配置而不是代码,所以根本不能 执行。 |