nginx lua 的坑

本文介绍了Nginx请求处理的11个阶段,重点解析了变量生成和内容输出阶段的问题,通过示例解释了配置指令的执行顺序。同时,探讨了Nginx Lua的8个阶段,包括它们的功能和应用场景,如设置变量、重写、访问控制、内容生成等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

0.nginx阶段分水岭:

0.1:变量生成阶段

0.2:内容输出阶段(content后包括content阶段)

e.g.

单set,单echo

 现在就来看这样一个令人困惑的例子:

    ? location /test {
    ?     set $a 32;
    ?     echo $a;
    ?
    ?     set $a 56;
    ?     echo $a;
    ? }

从这个例子的本意来看,我们期望的输出是一行 32 和一行 56,因为我们第一次用 echo 配置指令输出了 $a变量的值以后,又紧接着使用 set 配置指令修改了 $a. 然而不幸的是,事实并非如此:

    $ curl 'http://localhost:8080/test
    56
    56

我们看到,语句 set $a 56 似乎在第一条 echo $a 语句之前就执行过了。这究竟是为什么呢?难道我们遇到了 Nginx 中的一个 bug?

 

    显然,这里并没有 Nginx 的 bug;要理解这里发生的事情,就首先需要知道 Nginx 处理每一个用户请求时,都是按照若干个不同阶

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值