Motomichi Works Blog

モトミチワークスブログです。その日学習したことについて書いている日記みたいなものです。

nginxのデバッグ用のログを独自のフォーマットで出力する(nginx.conf内で使用している変数の値をログに出力する)

空ファイルを作成しておく

まず /var/log/nginx/debug_val.log を空ファイルで作成しておきます。

nginx.confの書き方

以下のように、httpディレクティブにlog_format フォーマット名 "フォーマット内容";として、フォーマットを定義します。

serverディレクティブに、access_log ログファイルのパス どのフォーマットで出力するか;を記述します。

http {
  〜略〜

  # debug用のログフォーマットを定義
  log_format debug_val_format "host[$host] http_origin[$http_origin]";

  〜略〜
  server {
    〜略〜

    # debug用のlogファイルの設定
    access_log /var/log/nginx/debug_val.log debug_val_format;

    〜略〜
  }
}

出力結果

以下のような感じで出力されます。

http_origin[api.example.com] remote_addr[192.168.xx.xx]

nginx.confで参照できる変数

以下のページが参考になります。

おわりに

今回の例では、$host$http_originを出力していますが、自分で定義した変数や、$http_xxxxxとしてリクエストヘッダー内の任意の値、$cookie_xxxxxとしてcookie内の任意の値を出力したり、ifディレクティブで判定に使用することができます。

xxxxxの部分はキーが小文字で入ります。