0

在我的 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 从返回指令中了解 nginx 状态?

4

2 回答 2

1

看起来 lua 模块中的错误阻止了正确设置。

https://github.com/chaoslawful/lua-nginx-module/commit/82ba941d

于 2013-10-23T00:12:52.120 回答
1

这是 ngx_lua 中的一个错误。“return”指令的响应状态代码的存储方式与正常响应状态代码不同,即 inr->err_status而不是r->headers_out.status. API 只是读取后者而ngx.status不是前者。

这个问题已经在 ngx_lua 的主分支中作为提交 82ba941d 修复:

https://github.com/chaoslawful/lua-nginx-module/commit/82ba941d

此修复将包含在 ngx_lua (0.9.1) 和 ngx_openresty (1.4.3.1) 的下一个版本中。

感谢您的报告!

于 2013-10-23T00:14:56.597 回答