とーますメモ

Ruby on Rails / Goなどの学習メモ

【Nginx】同一サーバで複数サイトを運営し、ログをサイト毎に分ける

自分用メモ。

access_logとerror_logはserverコンテキスト内に以下のように記述

access_log   /var/log/nginx/{service_domain}.access.log warn;
error_log   /var/log/nginx/{service_domain}.error.log;

サイト毎に新たにディレクトリを作成するのではなく、
あくまでもnginxのログはすべて/var/log/nginx内で管理する。
こうすることで、/etc/logrotate.d/nginxのデフォルトである「/var/log/nginx/*.log」の設定がそのまま使用できる。

上記の記述をサイト毎に記述し、nginxを再起動すると記述した通りの{service_domain}.access.logと{service_domain}.error.logができるが、これらのファイルの所有権とグループがroot:rootで作成されてしまう。

この記事を見ると、バグ?みたいな感じで書いてあるが詳細は不明。
centos 7 - Nginx creates log files owned by root instead of specified user - Super User

ただ以下のコマンドで、ログを再読込してあげるとnginx.confのuserディレクティブで指定したユーザが所有者になる。ただしグループはrootのまま。

$ nginx -s reopen

なので、結局はchownコマンドで直してあげるしかないのか...