beta

Dockerのnginx-proxyコンテナでBasic認証を追加する

Dockerのnginx-proxyコンテナでLet's Encryptに対応したコンテナを構築している際に、ドメインにBasic認証を追加する方法を確認したのでまとめました。設定フォルダに入れるだけでできるのでとても簡単です。

公開日:2018年9月6日

Githubレポジトリにやり方が書いてあります

GitHub - jwilder/nginx-proxy: Automated nginx proxy for Docker containers using docker-gen

Basic Authentication Support

In order to be able to secure your virtual host, you have to create a file named as its equivalent VIRTUAL_HOST variable on directory /etc/nginx/htpasswd/$VIRTUAL_HOST

htpasswdディレクトリの中に、VIRTUAL_HOST=つまりドメイン名のファイル名で認証ファイルをおけばいいってことですね。

htpasswdファイルを作成する

apache2-utilsが入っていればOKです。CentOSならhttpd-toolsですね。

htpasswdのディレクトリで、コマンドを実行します。

htpasswd -c -b ドメイン名 ユーザー名 パスワード

ホストで生成ができない場合は、ジェネレータで生成してホストにアップロードをしてもOKです。

htpasswdファイル生成(作成)

あとは、対象のコンテナを再起動するだけ

設定は、コンテナが起動したタイミングで読み込まれるので、すでに起動している場合は再起動します。

docker-composeでアップしている場合は、

sudo docker-compose restart

で反映されます。

Digest認証よりかはセキュリティのレベルは低いですが、公開したくないWebサイトに認証をかけたい時にサクッとできるので非常に便利です。