Nginx の log_format を変更したけれども反映されずハマった話
Published: 2021/12/16
nginx は、普通にインストールすると /etc/nginx
以下にデフォルトの設定ファイルが配置され、カスタマイズをする際にはここをいじることになる。
その中で、 /etc/nginx/nginx.conf
のファイルには、以下のような log_format
についての記述がある。
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
素直に考えると、この設定をいじればログ出力の形式を変更できると思われるが、ここを編集して nginx をリスタートしてもログ出力の形式は変わらず、それで少しハマってしまった。
原因と対処方法
上記の log_format
の設定は、「main
という名前のログ形式を定義しろ」という意味のディレクティブであり、なのでこれを利用する際にはその名前を明示的に指定する必要がある。
自分は /etc/nginx/conf.d/サービス名.conf
にて各種のサーバーごとの設定を記述していたが、そこの access_log
の設定においてこの名前を特に指定せず利用していたのが原因だった。
access_log /path/to/log/file.log;
なので、 /etc/nginx/conf.d/サービス名.conf
等において、以下のように access_log
を指定する必要がある。
access_log /path/to/log/file.log main;
Tags: nginx
関連記事
Nginx と upstream と SSL(https) とロードバランシング
2022/4/23