indexgo
login

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

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

作成者:Ssさん 公開日:2018年9月06日 21時12分 更新日:2018年9月06日 21時11分

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

Automated nginx proxy for Docker containers using docker-gen - jwilder/nginx-proxy
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ファイル生成(作成)

http://www.luft.co.jp/cgi/htpasswd.php

Good SoSo
htpasswdファイル生成(htpasswdファイル作成)するweb・ウェブ制作に役立つ便利ツール。htaccessを利用したユーザー認証によるアクセス制限(ベーシック認証)が可能です。

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

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

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

sudo docker-compose restart

で反映されます。

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