Nginx で特定のHTTPヘッダをログに出力する
log_format header '$http_hogehoge';
という感じで、http_ の後ろに出力したいヘッダ名を追記すればいい。
今までも、 http_referer とか http_user_agent とか使ってたけど、
そもそもそうゆうルールだってことを分かってなかったことに気づいてしまった午後…orz
例えば、AWS ELB の後ろでNginxとか動かしてて、アクセス元のIPアドレスを出力したい時は、
x_forwarded_for に入っているので、'$http_x_forwarded_for' で出力してあげればいい。
さらに ltsv で出力したいということで、↓みたいな感じでやってます。
log_format ltsv 'host:$remote_addr\t'
'user:$remote_user\t'
'time:$time_local\t'
'request:$request\t'
'status:$status\t'
'size:$body_bytes_sent\t'
'referer:$http_referer\t'
'ua:$http_user_agent\t'
'forwarded_for:$http_x_forwarded_for\t'
'forwarded_proto:$http_x_forwarded_proto\t'
'forwarded_port:$http_x_forwarded_port\t'
'http_host:$http_host\t'
'request_time:$request_time\t';
ラベル名が長い感じするけど、自分のところはアクセス量が膨大では無いので特に問題ないです。
おしまい。