Nginxを実行しているサーバーで複数のサイトをホストしています。すべての仮想ホストに個別のログファイルを使用したくはありませんが、各リクエストがどのNginx仮想ホストに属しているかをログから確認できるようにしたいです。これは、/ var/log/nginx /access.logで使用されるデフォルトのNCSA「結合」形式では不可能です。
Debian/Ubuntuの下のApacheは、デフォルトで/var/log/Apache2/other_vhosts_access.logにログを記録します。これには、vhost名が含まれますあります。 Nginx用にこれを複製するにはどうすればよいですか?
次のスニペットを/etc/nginx/other-vhosts-access-log.confとして保存し、Nginxをリロードします。これにより、/ var/log/nginx /other_vhosts_access.logへのログ記録が開始されます。 (これにより、/ var/log/nginx/access.logへのログ記録が停止しません。)形式は同じです(NCSA「結合」形式)が、値はserver_name
行の先頭。 vhostの名前が使用されることに注意してください。これは、要求されたホスト名と必ずしも同じではありません(エイリアスに追加のserver_name
ディレクティブがある場合)。
# borrowed from Apache
# (Could use $Host instead of $server_name to log vhost aliases separately)
log_format vhost_combined '$server_name $remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"';
# Define an access log for VirtualHosts that don't define their own logfile
access_log /var/log/nginx/other_vhosts_access.log vhost_combined
(ログローテーションに注意してください。ただし、これは/ var/log/nginx内のすべてのファイルについて、nginx-full
パッケージのlogrotateファイルでカバーする必要があります。)
警告:/ var/log/nginx/access.logへのログ記録を無効にしないでください上記の前にaccess_log off;
を使用すると、後続のaccess_log
ステートメントが機能しなくなります。