アクセス先のサブドメインに応じてnginxのログの出力先を変更する方法
背景
負荷テストを実施し、kataribeを用いてnginxのログ解析を行う必要がありました。
ただデフォルトだと、すべてのアクセスログが同じファイルに集約されてしまうため、対象のログだけを解析するのは結構めんどくさそうやなーと思っていました。
そこで、特定のサブドメインに対するアクセスのみ、そのログの出力先を別のファイルにできればええんちゃう?という助言をいただいたので、やり方を調べてみました。
やりたいこと
特定のサブドメインに対するアクセスがあった場合に、そのアクセスログの出力先を別のファイルに向けてやること
やり方
nginx.confのhttp{}のブロックに以下のコードを追加します。
map $request $test {
~.*dummy.* 1;
default 0;
}
map $request $normal {
~.*dummy.* 0;
default 1;
}
正規表現を用いて、dummyというサブドメインへのアクセスか否かを判定しています。
$requestがdummyというサブドメインを含んでいるか否かで、それぞれ対応した結果が変数testとnormalに格納されます。
この二つの変数を用いてログの出力先を調整します。
次に、アプリケーションのconfファイルのserver{}ブロックに以下のコードを追加します。
access_log /hogehoge/logs/access.log main if=$normal;
access_log /hogehoge/logs/dummy/access.log main if=$test;
このように設定すれば、サブドメインdummyへのアクセスのログはdummyディレクトリ下のaccess.logに書き込まれます。
これで特定のサブドメインに対するアクセスログだけを別ファイルに抽出できたので、思う存分ログ解析できそうです。
他にも$user_agentなどを指定すれば、特定のユーザエージェントからのアクセスのみうんたらかんたらとかもできそうですね。
注意点
access_log /hogehoge/nginx/logs/access.log main if=$normal;
access_log /hogehoge/nginx/logs/dummy/access.log main if=$test;
access_log /hogehoge/nginx/logs/access.log main if=$normal;
access_log /hogehoge/nginx/logs/dummy/access.log main if=$test;
こういうif文が使えるのはnginxの1.7系以上だそうです。
Author And Source
この問題について(アクセス先のサブドメインに応じてnginxのログの出力先を変更する方法), 我々は、より多くの情報をここで見つけました https://qiita.com/Takaaaki_z/items/a251301a1912924c5b00著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .