【问题标题】:ngx.status variable not being setngx.status 变量未设置
【发布时间】:2013-10-23 08:14:56
【问题描述】:

在我的 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 状态?

【问题讨论】:

    标签: nginx lua


    【解决方案1】:

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

    这个问题已经在 ngx_lua 的 master 分支中修复为 commit 82ba941d:

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

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

    感谢您的报告!

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-11
        • 2013-03-14
        • 2021-11-29
        • 2019-07-25
        • 2014-09-05
        相关资源
        最近更新 更多