2013年4月29日月曜日

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';

ラベル名が長い感じするけど、自分のところはアクセス量が膨大では無いので特に問題ないです。


おしまい。

0 件のコメント:

コメントを投稿