2013-10-22 44 views
0

在我的nginx的配置我已经设置了从LUA服务回退错误页面下面几行:ngx.status变量没有被设置

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状态?

回答

1

这是ngx_lua的错误。 “返回”指令的响应状态代码与正常响应状态代码存储的不同,即r->err_status而不是r->headers_out.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)的下一个版本。

谢谢你的报告!