http {
log_format geoproxy
'[$time_local] $remote_addr '
'$realip_remote_addr $remote_user '
'$proxy_protocol_server_addr $proxy_protocol_server_port '
'$request_method $server_protocol '
'$scheme $server_name $uri $status '
'$request_time $body_bytes_sent '
'$geoip_city_country_code3 $geoip_region '
'"$geoip_city" $http_x_forwarded_for '
'$upstream_status $upstream_response_time '
'"$http_referer" "$http_user_agent"';
# ...
}
このログ形式の構成はgeoproxyという名前で、NGINXログ機能を実行するために埋め
込み変数を使用します。この構成は、リクエストが行われたときのサーバーの現地時間、
接続を開いたIPアドレス、およびクライアントのIPを示します。NGINXはgeoip_proxyま
たはrealip_headerの指示に従って理解します。
サーバーのlistenディレクティブ で proxy_protocolパラメータが使 用されている場
合、$proxy_protocol_server_で始まる変数は、PROXYプ ロトコル ヘッダーからサー
バーに関する情報を提供します。$remote_userは、ベーシック認証によって認証された
ユーザーのユーザー名を示し、その後、要求の方法とプロトコル、HTTPやHTTPSな
どのスキームが続きます。サーバー名一致がログに記録され、リクエストURIと返答の
ステータスコードも記 録されます。
ログに記録される統計には、ミリ秒単位の処理時間とクライアントに送信される本文
のサイズが含まれます国、地方、都市の情報も記録されます。リクエストが別のプロキ
シによって転送されているかどうかを示すために、HTTPヘッダーX-Forwarded-Forが
含まれます。upstreamモジュールは、いくつかの埋め込み変数を有効にします。これら
の 変 数はアップ ストリームサーバーから返された ステータスとアップストリームリクエ
ストが返されるまでにかかる時間を示します。最後に、クライアントが参照された場
所と、クライアントが使用しているブラウザに関する情報をログが記録されています。
log_formatディレクティブ は HTTPコ ン テ キ ス ト 内 で の み 有 効 で す 。オ プ シ ョ ン の
escape パラメータは文字 列でどのタイプのエスケープがなされたかを指定できます。
エ スケ ープ値 は default、json、noneのいずれかです。none値 は エ スケープ を 無 効 にし
ま す 。デ フ ォ ル ト の エ ス ケ ー プ で は 、文 字 “"”、“”および値が32未満または126を超える
その他の文字は、“xXX”としてエスケープされます。変数値が見つからない場合には、
ハイフン (“-”) が 記 録されます。jsonエ スケープの 場 合、JSON文字列で許可されない
すべ ての 文 字 がエ スケープ され ます:“"”や“” は“ "”、“ \”としてエ スケープ され ます。
値が32未満の文字は“
”、“
”、“ ”、“”、“f ”、“u00XX”としてエ スケープ され ます。
このログ構成は、次のようなログエントリをレンダリングします:
148 |
第14章:アクセスログを使用したデバッグとトラブルシューティング、エラーログ、要求のトレース