nginxでリクエスト/レスポンスヘッダーをログ出力

nginx
nginx でクライアントの "Accept-Encoding" をログ出力する必要があったので調べた。

ログ出力の基本

ngx_http_log_module モジュールでログ出力する。
nginx.conflog_format で指定。

Ubuntu では nginx.conf/etc/nginx/nginx.conf にある。

書式

リクエスト/レスポンスヘッダーともに log_format$prefix_{field_name} で指定する。

prefix はリクエスト/レスポンスで異なる

field_name は正規化しなければいけない。

  • 大文字は小文字にする
  • ハイフンはアンダースコアにする

リクエストヘッダーのログ出力

prefix は http
Accept-Encoding の場合 $http_accept_encoding となる。
ドキュメントのどこかに明示的にかかれているのかな?今回はこの仕様がわからず少し苦労した。

レスポンスヘッダーのログ出力

prefix は sent_http
Content-Type の場合 $sent_http_content_type となる。

The headers, transmitted to client, begin from the prefix “sent_http_”, for example, $sent_http_content_range.
http://nginx.org/en/docs/http/ngx_http_log_module.html

Samples

nginx.conf の設定例

log_format gzip '"$request" $status $bytes_sent '
                '"$sent_http_content_type" '
                '"$http_accept_encoding" '
                '"$http_accept_language" '
                '"$http_user_agent"';

/var/log/nginx/access.log の出力例

"GET /index.html HTTP/1.1" 200 473 "text/html" "gzip,deflate,sdch" "en-US,en;q=0.8" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.69 Safari/537.36"
  • $sent_http_content_type(Response ヘッダーの Content-Type) => text/html
  • $http_accept_encoding(Request ヘッダーの Accept-Encoding) => gzip,deflate,sdch

というように、期待通りにログ出力されている。

その他

リクエスト/レスポンスヘッダーの一覧は次のページを参照。
http://en.wikipedia.org/wiki/List_of_HTTP_header_fields

Chrome の URL 欄に chrome://net-internals/#events を入力すると通信内容を確認できる。
http://www.chromium.org/developers/design-documents/network-stack/debugging-net-proxy

Advertisements
Tagged with: , ,
Posted in middleware

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Archives
  • RT @__apf__: How to write a research paper: a guide for software engineers & practitioners. docs.google.com/presentation/d… /cc @inwyrd 4 months ago
  • RT @HayatoChiba: 昔、自然と対話しながら数学に打ち込んだら何かを悟れるのではと思いたち、専門書1つだけ持ってパワースポットで名高い奈良の山奥に1週間籠ったことがある。しかし泊まった民宿にドカベンが全巻揃っていたため、水島新司と対話しただけで1週間過ぎた。 それ… 5 months ago
  • RT @googlecloud: Ever wonder what underwater fiber optic internet cables look like? Look no further than this deep dive w/ @NatAndLo: https… 5 months ago
  • @ijin UTC+01:00 な時間帯で生活しています、、、 10 months ago
  • RT @mattcutts: Google's world-class Site Reliability Engineering team wrote a new book: amazon.com/Site-Reliabili… It's about managing produc… 1 year ago
%d bloggers like this: