問題の説明
HTTPリクエストヘッダー情報をログに記録して、リクエスト情報の表示、リクエストのデバッグなどを行いたいと考えています。
このメモには、次の内容が記録されます。HTTP要求ヘッダー情報をNginxのログに記録する方法。
解決
簡単に言えば、現在(2021年1月11日)、直接的な解決策(変数)はなく、回避策が必要です。
解決策1、列挙型変数
ログ形式をカスタマイズし、これらの変数をログに出力します。次の例では、クライアントのネットワークアドレスに関連するいくつかの変数が出力されます。
' ' upstream_addr = "$ upload_addr"、 '; サーバー{ ..。 access_log /var/log/nginx/client-ip-address.log client_ip_address; ... }
解決策2、Luaモジュールを使用する
1)lua-nginx-moduleモジュールをインストールします。
#Debian GNU / Linux 10(バスター)apt-get install libnginx-mod-http-lua #通常はそのまま使用します。モジュールをインポートするためにload_module / path / to / module.soを使用する必要はありません。
2)次のコードを使用してヘッダーを記録します。
#この例では、ヘッダー情報をログに書き込みます header_filter_by_lua_block { local h = ngx.req.get_headers() for k、v in pair(h)do ngx.log(ngx.ERR、 "Got header" .. k。 。「:」..v ..「;」) 端 } #この例では、直接要求ヘッダー戻ります 場所/ request_headers { default_type'text /平野「; # または変数に書き込むと、基準 set_by_lua $ request_headers」 ローカルにh = ngx.req.get_headers() local request_headers_all = "" for k、v in pair(h)do request_headers_all = request_headers_all .. "" ..k .. ":" ..v .. "; \\ n" end return request_headers_all '; return 200 $ request_headers; }
詳細な説明は拡張せず、アイデアを提供する(そして有効性を検証する)だけであることに注意してください。
関連記事
「Nginx」-カスタムログ形式「Nginx」-ログパスで
変数を使用します
参照
ロギング-nginxのすべてのヘッダーをログに記録する方法は?-Stack Overflow
openresty / lua-nginx-module:LuaのパワーをNGINXHTTPサーバーに組み込みます