access_by_lua和content_by_lua在nginx.conf中用于引用Lua脚本的区别是什么?

6

我目前感到困惑。我的代码在每次请求发送到location /时都能正常工作。

########nginx.conf

server {
        listen       8000;
        server_name  localhost;

    lua_code_cache on;

        location / {
            content_by_lua_file /path/to/file.lua;
        }       
    }

file.lua 对每个传入的 http 请求执行一些操作。如果我通过 access_by_lua_file 而不是 content_by_lua_file 引用 file.lua,那么这样做有什么区别呢?

如果这是一个愚蠢的问题,请谅解并请帮助我学习。 :)

1个回答

12
每个处理不同的阶段。

https://openresty-reference.readthedocs.io/en/latest/Directives/#access_by_lua

access_by_lua_file作为访问阶段处理程序,content_by_lua_file作为内容阶段处理程序。

参考http://nginx.org/en/docs/dev/development_guide.html#http_phases

NGX_HTTP_ACCESS_PHASE — 验证客户端是否有权进行请求的阶段。标准的nginx模块,如ngx_http_access_module和ngx_http_auth_basic_module,在此阶段注册其处理程序。默认情况下,客户端必须通过此阶段所有已注册处理程序的授权检查才能继续到下一阶段。可以使用satisfy指令,如果任何阶段处理程序授权客户端,则允许继续处理。

NGX_HTTP_CONTENT_PHASE — 通常生成响应的阶段。多个nginx标准模块在此阶段注册其处理程序,包括ngx_http_index_module或ngx_http_static_module。它们按顺序调用,直到其中一个产生输出。还可以根据每个位置设置内容处理程序。如果ngx_http_core_module的位置配置设置了处理程序,则将其作为内容处理程序调用,并忽略在此阶段安装的处理程序。


谢谢。这个解释很棒! - robe007

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接