NginxでAWS ELBのHealth Checkログを出力させない方法
NginxでAWS ELBのHealth Checkをアクセスログとして出力させない方法を紹介します
環境
方法
コンフィグ
map $http_user_agent $loggable {
~ELB-HealthChecker 0;
default 1;
}
access_log /var/log/nginx/access.log main if=$loggable;
解説
map $http_user_agent $loggable {
~ELB-HealthChecker 0;
default 1;
}
access_log /var/log/nginx/access.log main if=$loggable;
mapとaccess_logに分けて少し解説していきます
map
map $first $second {...}
とすると、$first
を{...}
に沿って評価して返り値を$second
にマッピングします
今回の場合は$http_user_agent
、つまりHTTPヘッダーに含まれるUser AgentがELB-HealthChecker
に部分一致するか評価して一致するなら0、一致しなければ1を$loggable
にマッピングします
ELB-HealthCheckerの前についている~
は正規表現を使うための記号です
~
はcase-sensitiveで、~*
はcase-insensitiveです
[備考]
2020/10時点では正式なUser AgentはELB-HealthChecker/2.0
でした
/以降はバージョンなので今後変更の可能性があるので、ELB-HealthCheckerが含まれているかだけチェックしましょう
access_log
access_logにはif
というパラメータがあります
条件が0か空文字と評価されたらログ出力しなくなります
今回は$loggableのデフォルトが1で、ELB-HealthCheckerがUser Agentに含まれていたら0になるので、Health Checkのアクセスログが出力されなくなります。
Reference
Author And Source
この問題について(NginxでAWS ELBのHealth Checkログを出力させない方法), 我々は、より多くの情報をここで見つけました https://qiita.com/homines22/items/7f81ef8e7d23f3c18ffe著者帰属:元の著者の情報は、元の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 .