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が既存の変数の複製であり、構成をロードしないと不平を言います。

return ディレクティブから nginx のステータスを lua に知らせるにはどうすればよいですか?

4

2 に答える 2

1

これは ngx_lua のバグでした。「return」ディレクティブの応答ステータス コードは、通常の応答ステータス コードとは異なる方法で、つまりr->err_statusではなくに格納されr->headers_out.statusます。APIはngx.status、前者ではなく後者を読み取るだけです。

この問題は、コミット 82ba941d として ngx_lua のマスター ブランチで既に修正されています。

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 に答える