• nginxでヘルスチェックのアクセスログを出力させない設定

    おはようございます。インフラの宮下です。
    今回はnginxのログ関連の設定になります。


    目次

    1. はじめに
    2. ngx_http_geo_moduleについて
    3. nginxへの設定
    4. 参考サイト

    はじめに

    apacheで良く実施する、setenvの定義を利用して特定NWから来るログを出力しないような設定をnginxでも実施したかったのですが同じ機能が無かったので調べてみました。 使い道としては、ロードバランサーのヘルスチェックや監視サーバからの接続など、ログに出力しない方が都合が良い時に利用できます。 解析するには不要ですし、余計なDISK I/Oも抑えられます。

    ngx_http_geo_moduleとは

    公式ドキュメント

    ドキュメントの通りIPアドレスを変数としてセットできます。
    一般的に使われるのは、特定の国のNWは接続拒否するような時にこのモジュールを使う事が多いようです。 そのような場合は、includeして大量に登録された別ファイルで管理する事も可能です。

    nginxへの設定

    nginx.confに設定します。
    [shell]# vi nginx.conf http { include mime.types; (中略) # not access_log IP’s geo $no_log { default 0; 172.0.1.0/24 1; } server { (中略) location / { root /var/www/html; index index.cgi index.php index.html index.htm; if ($no_log) { access_log off; } } }[/shell]

    ...