nginx - アクセスログのフィールドを切り捨てる

nginx - アクセスログのフィールドを切り捨てる

アクセス ログに保存されているフィールドの内容を切り捨てる方法はありますか?

User-Agent の最初の 10 文字のみを保持することに興味があります。

答え1

まず、切り捨てられたユーザー エージェントを含むカスタム変数を導入します。そのためには、map通常のユーザー エージェント変数のディレクティブを使用します$http_user_agent。マップ モジュールのドキュメントは、こちらにあります。http://nginx.org/en/docs/http/ngx_http_map_module.html次に、ディレクティブを使用してログ形式を設定します。log_format詳細については、https://docs.nginx.com/nginx/admin-guide/monitoring/logging/最後に、access_logカスタム ログ形式を使用するように に指示します。

要約すれば:

# ...
http {
    map $http_user_agent $trunc_agent {
        default "";
        "~*(?P<tr>.{0,10}).*" $tr;
    }
    log_format myformat '[other fields] "$trunc_agent"';
    access_log [logfile] myformat;
}
# ...

関連情報