• 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]

    ...
  • SSHでforced-commands-onlyを使ってVIPを付けてみる

    おはようございます。インフラの宮下です。

    今回は端末機からサーバの仮想IPを付けたり削除する時のSSH設定に関する手順です。
    MHAの内部でIPをfailoverする所をお手製で実施するイメージです。

    SSH接続でroot権限を実行する方法としては、

    ・rootで公開鍵認証が出来るようにする。
    ・ログインユーザがsudo出来るようにしてrootにスイッチする。
    ・rootで特定のコマンドだけ実施出来るようにする。

    の3通りありますが、今回はセキュリティレベルがそんなに変わらない3番目の方法を適用したいと思います。
    既にsudo出来る環境なら良かったのですが、sudoできない環境なのでforced-commands-onlyを使用します。

    作業環境は以下の通りです。

    接続元のOS:SunOS test 5.10 Generic_147440-19 sun4v sparc sun4v
    →端末機と呼びます
    接続先のOS:Red Hat Enterprise Linux Server release 6.2 (Santiago)
    →サーバ呼びます

    今時珍しいsolarisが端末と言う事でレトロ感満載の環境と言う事はお察し下さい。

    (端末機の設定)

    ・ログインするユーザの公開鍵を作成します。コマンド毎に鍵を分けるので2個用意します。

    [shell]# ssh-keygen -t rsa -N "" -f ~/.ssh/ipadd_command 公開/非公開 rsa 鍵のペアを生成しています。 識別情報が /export/home/test/.ssh/ipadd_command に保存されました。 公開鍵が /export/home/test/.ssh/ipadd_command.pub に保存されました。 鍵のフィンガープリント: 80:1e:4f:8b:2a:0d:22:fb:e2:c7:22:75:70:ef:db:a2 test@test

    ...