布団の中にいたい

Elasticsearchいじったり、Androidアプリ書いたり。最近は数学の勉強が楽しくなってきました。

nginxでbasic認証をかける

localで運用しているelasticsearch + kibanaをクラウドに移行しようと考えていたのですが、 awsのelasticsearchは予想外に金額が高かったのでconohaのVPSで運用することにしました。 X-Packを使えばkibana自体に認証をかけられますが、それも有料なのでどうしたもんかと考えた結果、 kibanaの前にnginxをおいて、そこに認証をかけてしまうことにしました。

ちらっと聞いた話でnginxでbasic認証をかけるのは簡単という話を聞いたので試してみました。

やることは以下

  • htpasswdでアカウントとパスワードを設定する
  • nginx側で認証をかける

htpasswdでアカウントとパスワードを設定する

htpasswdはbasic認証で利用できるファイルを生成してくれるコマンドです。便利ですね。インストールは以下のコマンドでできます。

sudo apt-get install apache2-utils

ファイル生成は以下

sudo htpasswd -c /etc/nginx/.htpasswd account_name

nginx側で認証をかける

htpasswdで生成したファイルをnginx.confで指定してあげます。全体に認証をかけることもできますし、任意の部分にかけることもできます。 今回はkibanaへのアクセス部分にかけるのでlocationにかきます。

upstream elasticsearch {
  server localhost:9200;
}

upstream kibana {
  server localhost:5601;
}

http {
  server {
    listen 80;
    server_name localhost;

    location / {
      auth_basic "Restricted";
      auth_basic_user_file /etc/nginx/.htpasswd;
      proxy_pass http://kibana;
    }
  }
}

設定したあと、nginxをrestartすればできます。大変楽でいいですね。

まとめ

今回はnginxでさくっとbasic認証をかけてみました。今までは割とクライアント周りばかりを触っていたのでweb serverなどをほとんど触っていなかったのですが、大雑把な部分は簡単にできるようでよかったです。細かい部分についてはまたおいおいやっていければと思います。