在我的nginx配置中,我设置了以下行以从lua提供回退错误页面:
error_page 502 @fallback;
location @fallback {
content_by_lua_file 'fallback.lua';
}
location / {
return 502;
}
然后在我的lua文件中,我在文件的顶部有以下内容:
ngx.log(ngx.ERR, "reported status is: " .. ngx.status)
我希望它是502但是报告ngx.status是0.
我试图通过编写
来解决这个问题set $status 502
但是nginx抱怨$status
是现有变量的副本,不会加载配置。
如何让lua从return指令中了解nginx状态?
答案 0 :(得分:1)
看起来lua模块中的一个错误是阻止正确设置。
https://github.com/chaoslawful/lua-nginx-module/commit/82ba941d
答案 1 :(得分:1)
这是ngx_lua中的一个错误。 “return”指令的响应状态代码存储得比正常响应状态代码差,即r->err_status
而不是r->headers_out.status
。 ngx.status
API只读取后者而不是前者。
此问题已在ngx_lua的主分支中修复为提交82ba941d:
https://github.com/chaoslawful/lua-nginx-module/commit/82ba941d
此修订将包含在下一版本的ngx_lua(0.9.1)和ngx_openresty(1.4.3.1)中。
感谢您的举报!