nginxでbasic認証を設定

隠すほどのデータがあるわけではないのですが、nginxにbasic認証をかけておきます。

まず、nginxの設定ファイルを修正します。今回は、/etc/nginx/site-available/defaultを編集します。

location / {
    # set basic auth
    auth_basic      "Closed site";
    auth_basic_user_file /etc/nginx/conf.d/htpasswd/example;
}

サイト丸ごとパスワードをかけてしまいますので、location / のところにパスワードファイルの置き場所を設定します。

次に、パスワード格納ディレクトリとパスワードファイルを作成します。

root@i-xxxxxxxx:/etc/nginx/conf.d# mkdir htpasswd
root@i-xxxxxxxx:/etc/nginx/conf.d# chown www-data.www-data htpasswd
root@i-xxxxxxxx:/etc/nginx/conf.d# chmod 700 htpasswd

root@i-xxxxxxxx:/etc/nginx/conf.d# cd htpasswd/
root@i-xxxxxxxx:/etc/nginx/conf.d/htpasswd# echo "設定するユーザー名:$(openssl passwd -apr1 設定するパスワード)" > /etc/nginx/conf.d/htpasswd/example
root@i-xxxxxxxx:/etc/nginx/conf.d/htpasswd# sudo chown www-data.www-data /etc/nginx/conf.d/htpasswd/example && chmod 400 /etc/nginx/conf.d/htpasswd/example 
root@i-xxxxxxxx:/etc/nginx/conf.d/htpasswd# cat example 
設定したユーザー名:$xxxx$xxxxxxxx$xxxxxxxxxxxxxxxxxxxxxx 
root@i-xxxxxxxx:/etc/nginx/conf.d/htpasswd# history -c

opensslのコマンドでパスワード文字列を生成してファイルに格納します。設定したディレクトリとパスワードファイルは適切なオーナーとパーミッションを設定しておきます。

なお、コマンドラインでパスワードを打ってしまっているので、最後に history -c として履歴を消しておきます。

この状態で、現状はbasic認証無しでnginxのwelcomeページが表示されるのを確認したら、

root@i-xxxxxxxx:/etc/nginx/conf.d# systemctl reload nginx.service

として、設定ファイルをリロードします。その後、再度表示させた際にbasic認証がかかるのを確認して完了です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)