本記事ではNginxでのログフォーマット設定について記述します。
なお本記事では以下の環境で検証している。
Linux 環境
OS:Debian GNU/Linux 12 (bookworm)
ミドルウェア:nginx(1.25.5)
目次
ログフォーマットの設定
Nginxのログフォーマットは、log_formatディレクティブを使用して設定する。アクセスログやエラーログに記録される情報の形式をカスタマイズできる。
以下は、Nginxのログフォーマットの設定例。これをNginxの設定ファイル(通常は/etc/conf/nginx.conf)に追加することでカスタマイズ可能。またアクセスログのログフォーマットを設定している。エラーログについてもカスタマイズ可能。
http {
log_format myformat '$remote_addr - [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log myformat;
}
以下が解説です。
- httpブロックは、HTTPサーバーの設定する内容を記述する。
- myformatはログフォーマットの設定名であり、自由に変更可能。
- 各種変数については次章で詳しく解説する。
ログフォーマット解説
前章で紹介したログフォーマット設定で使用した変数の説明は以下の通り。
フォーマット | 説明 |
---|---|
$remote_addr | クライアントのIPアドレス |
$time_local | サーバーのローカルタイムでのリクエスト受信時刻 |
$request | リクエストの詳細(メソッド、リクエストURI、HTTPバージョン、例: GET /index.html HTTP/1.1) |
$status | レスポンスのステータスコード(例: 200) |
$body_bytes_sent | クライアントに送信されたバイト数(ヘッダは含まない) |
$http_referer | リファラーヘッダ(リクエスト元のURL) |
$http_user_agent | ユーザーエージェントヘッダ。クライアントのブラウザやデバイス情報が含まれる。 |
$http_x_forwarded_for | クライアントの本来のIPアドレス。プロキシを経由する場合に使用される。複数のIPがカンマ区切りで記録されることがある。 |
実際のログの抜粋と解説
nginxサーバーに対して、WebブラウザEdgeからアクセスした場合のアクセスログを抜粋したのが以下。
119.170.127.xx - [04/Aug/2024:05:08:33 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 Edg/127.0.0.0" "-"
各種変数に格納されている値は以下となる。
- $remote_addr: 119.170.127.xx
- $time_local: 04/Aug/2024:05:08:33 +0000
- $request: GET / HTTP/1.1
- $status: 304
- $body_bytes_sent: 0
- $http_referer: –
- $http_user_agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 Edg/127.0.0.0
- $http_x_forwarded_for: –
フォーマット | 説明 |
---|---|
$request_time | リクエストの処理にかかった時間(秒単位) |
$upstream_response_time | 上流サーバからのレスポンス時間(秒単位) |
$request | リクエストの詳細(メソッド、リクエストURI、HTTPバージョン、例: GET /index.html HTTP/1.1) |
$scheme | リクエストのスキーム(httpまたはhttps) |
$server_name | リクエストが到達したサーバー名 |
$request_length | リクエストの総バイト数(リクエスト行、ヘッダー、ボディを含む) |
$http_x_forwarded_for | クライアントの本来のIPアドレス。プロキシを経由する場合に使用される。複数のIPがカンマ区切りで記録されることがある。 |
NginxのTIPSリンク集
- Nginxのログフォーマット設定と出力ログの見方を解説
- Nginxを再起動前にコマンドで文法チェックや設定誤りを確認をする方法
- [Nginx]オレオレCA認証局でSSL通信をする手順。サーバ証明書・秘密鍵・証明書署名要求の作成方法
- [Nginx]オレオレCA認証局を利用したクライアント証明書通信をする手順
- Nginxのログ一覧・ログ設定・ログ出力先の確認・設定方法を解説
- NginxでBasic認証の設定する方法
- Nginxの設定ファイル(.conf)の書き方と設定方法
- Nginxでリバースプロキシの構築・設定方法
- NginxでSSL設定してHTTPS通信をする手順
- NginxのVirtualhostを使って1つのサーバーでサブドメインを公開する手順
- [Nginx] サブディレクトリのアクセスを異なるWebサーバーにアクセスを振り分ける方法