概要
Webアプリ開発のための環境構築を以下の環境で行っています。
・OS:CentOS
・アプリケーションサーバ:django
・Nginx:Webサーバ
・データベース:MySQL
誰でもアクセスできる状態はまずいな、ということでBasic認証をかけていきます。
参考にさせていただいた記事は以下です。
https://qiita.com/You_name_is_YU/items/e8db11eaa10067556e52
Basic認証とは
Web上で利用できる認証システムです。
Basic認証が設定されているページへ行くと、IDとパスワードが求められるポップアップが現れます。
セキュリティレベル
「.htaccess」というものを利用して設定する、非常に簡単な認証機能です。
そのため、セキュリティレベルは低いです。
あくまでも、取り急ぎ行う認証であることは把握しておきましょう。
Basic認証の設定
nginxコンテナにアクセス
まず、Docker内のnginxコンテナに入ります。
以下のコマンドで入ることができます。
# docker-compose exec {コンテナ名} {コマンド}
コンテナ名はdocker-compose.ymlで確認できます。
自分の場合は以下です。
# docker-compose exec nginx bash
Badic認証の設定
本題のBasic認証の設定を行っていきます。
Basic認証を設定するためには、htpasswdコマンドを実行し、.htpasswdファイルを作成します。
そこでまず、コマンドをインストールします。
# yum -y install httpd-tools
bash: yum: command not found
Oh...yumが入っていない。
そうですね、コンテナ内ではyumがインストールされていませんでした。
一方でaptが使えました。
この辺はRedhut系なのかなど、環境によりけりですね。
# apt -v
apt 1.4.8 (amd64)
とりあえずupdateをかけます。
# apt update
aptでもパッケージのインストールはできますが、yumの方がいい場合は以下で行けます。
# apt install yum
Basic認証の準備
# apt install apache2-utils
# htpasswd -c /etc/nginx/.htpasswd [username]
# vim /etc/nginx/nginx.conf
以下を追記しました。
location / {
auth_basic "Restricted"; # 認証時に表示されるメッセージ
auth_basic_user_file /etc/nginx/.htpasswd; # .htpasswdファイルのパス
}
nginxを再起動して。
# service nginx restart
webページにアクセスすると、basic認証が確認できました。