Hi all
想了解下ngx_lua和nginx的底层交互原理,请问有这方面的资料吗?
1,ngx lua中的脚本执行和lua_State是什么关系?是nginx启动就创建了一个lua_State,之后就不会创建了吗? 还是说动态加载一段lua文件就会生成一个新的lua_State?不同的*_by_lua_block的全局变量是如何共享的?这里的变量作用范围是什么?
2, 假设nginx 模块A的现有逻辑是直接将请求转发给上游B。,现在新增了一段lua代码,这段代码需要和先和上游A交互,然后根据返回结果再决定是否将请求转发给上游B。
我理解是lua使用coroutine的方式实现了和上游B交互,使得用户可以用同步的逻辑来编程,但是这个同步逻辑是如何和nginx的异步逻辑交互的呢?具体地说:
lua发送了请求给上游A,此时如何处理nginx的逻辑?返回什么值给nginx?把什么事件加入到了nginx的事件循环中?