我目前很困惑。我的代码适用于发送给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
,会有什么不同?
如果这是一个愚蠢的问题,我深表歉意。请帮我学习。 :)
答案 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的位置配置已设置处理程序,则将其称为内容处理程序,并且在此阶段安装的处理程序将被忽略。