少しづつnginxを知っていきましょう〜
久々にnginxの話題です。
恐らくデフォルトのlog_formatは以下のようになっています。
log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /etc/nginx/logs/access.log;
この中の「main」とは何でしょう。
これは、シングルクォートで囲った書式に「main」という名前をつけています。ここでは名前をつけているだけなので、ここだけ設定してもログフォーマットは変わりません。
このmainを使うには、以下のように書式名を指定することで、有効になります。
access_log /etc/nginx/logs/access.log main;
続いて、ホスト名をaccess_logに出力するよう修正してみましょう。
log_format main '$host$remote_addr - $remote_user [$time_local] "$http_host" "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /etc/nginx/logs/access.log main;
このように$http_hostを追加し、nginxを再起動することで、ホスト名も出力されるようになり、こんな感じで出力されます。
66.249.69.121 - - [11/Jan/2012:00:55:40 +0900] "tree-shop.info" "GET /rakuten/product/detail/1fed45d5da7e1e517b195f4357576431/ HTTP/1.1" 200 3236 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" "-"
「tree-shop.info」の部分が$http_hostに当たります。