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などをほとんど触っていなかったのですが、大雑把な部分は簡単にできるようでよかったです。細かい部分についてはまたおいおいやっていければと思います。