こんにちは、鯨井貴博@opensourcetechです。
今回は、NginxのLogモジュールとHeadersモジュールを使用してみます。
Logモジュールは、ログファイルの保存場所やログフォーマットに関するモジュール、
Headersモジュールは、expires/Cache-Controlヘッダーと任意のヘッダーを追加する事が出来るモジュールです。
以下からそれぞれのモジュールの詳細を確認出来ます。
Module ngx_http_headers_module
早速、両モジュールの設定(/etc/nginx/conf.d/default.conf)を行います。
log_format custom $bytes_sent#$connection#$connection-requests#$msec#$pipe#$request_length#$request_time#$status#$time_iso8601#$time_local;(ログフォーマットの定義)
※切れ目を分かりやすくするために、わざと#を入れています。
access_log /var/log/nginx/test_access.log custom;(ログファイルの設定)
expires 24h;(expiresヘッダーの追加)
add_header Cache-Control private;(Cache-Controlヘッダーの追加)
add_header Test-Header kujirai;(任意ヘッダーの追加)
なお、log_formatの各項目は、
$bytes_sent
- クライアントへの送信バイト数
$connection
- コネクションシリアル番号
$pipe
- パイプライン時はp、それ以外の時は.を表示
$request_length
- リクエスト長(リクエスト行, ヘッダー,リクエストボディーを含む)
$status
- レスポンスステータス
$time_iso8601
- ISO 8601標準フォーマットでのローカルタイム
$time_local
- 共通ログフォーマットでのローカルタイム
設定の反映。
systemctl restart nginx.service
systemctl status nginx.service
ちなみに設定ミスなどの際には、systemctl -l status nginx.serviceとすると、
どこがミスっているか分かります。
ヘッダーの確認にはgoogle chromeのアドレスバーに、
chrome://net-internals/と入力して行います。
※firefoxのlive http headersとかでもいいです。
左のCaptureという欄を選択した状態で、
Nginxへクライアントからアクセスします。
そして、Stopをクリック後、
Eventsを選択すると、
以下のようにヘッダー情報を含む詳細が確認出来るようになります。
また、ログの確認をすると、
以下のように指定されたファイルに指定フォーマットで出力が確認出来ます。
nginxが試験範囲に含まれているLPICレベル2を勉強されている方は、
こちらもどうぞ!