access_by_lua 和 content_by_lua 引用 nginx.conf 中的 lua 脚本有什么区别?

Ish*_*rty 7 lua nginx nginx-config

我目前很困惑。我的代码适用于发送到的每个请求location /

########nginx.conf

server {
        listen       8000;
        server_name  localhost;

    lua_code_cache on;

        location / {
            content_by_lua_file /path/to/file.lua;
        }       
    }
Run Code Online (Sandbox Code Playgroud)

对每个传入的 http 请求执行file.lua一些操作。file.lua如果我包含viaaccess_by_lua_file而不是会有什么不同content_by_lua_file

如果这是一个愚蠢的问题,我深表歉意。请帮助我学习。:)

Pig*_*let 13

每个处理不同的阶段。

\n\n

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

\n\n

access_by_lua_file 充当访问阶段处理程序,content_by_lua_file 充当内容阶段处理程序。

\n\n

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

\n\n

NGX_HTTP_ACCESS_PHASE \xe2\x80\x94 验证客户端是否有权发出请求的阶段。标准 nginx 模块(例如 ngx_http_access_module 和 ngx_http_auth_basic_module)在此阶段注册其处理程序。默认情况下,客户端必须通过此阶段注册的所有处理程序的授权检查,请求才能继续下一阶段。满足指令可用于允许在任何阶段处理程序授权客户端时继续处理。

\n\n

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

\n