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

时间:2020-06-04 18:40:47

标签: nginx lua nginx-config

我目前很困惑。我的代码适用于发送给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请求执行一些操作。 如果我通过file.lua而不是access_by_lua_file加入了content_by_lua_file,会有什么不同?

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

1 个答案:

答案 0 :(得分:2)

每个阶段都处理不同的阶段。

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)在此阶段注册其处理程序。默认情况下,客户端必须通过对在此阶段注册的所有处理程序的授权检查,才能继续进行下一阶段的请求。如果任何阶段处理程序授权客户端,则满意指令可用于允许继续进行处理。

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