"Nginx" -HTTPリクエストヘッダーをlog @ 20210223に記録します

問題の説明

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サーバーに組み込みます

おすすめ

転載: blog.csdn.net/u013670453/article/details/113987188