LoginSignup
0
0

More than 3 years have passed since last update.

ローカル環境をなるべく汚さずにNginxでBasic認証

Posted at

TL;DR

Dockerのhttpdイメージを利用してhtpasswdコマンドを実行し、得られた行をコピペしましょう

やり方詳細

Basic認証をするには、.htpasswdファイルを作成する必要があります。しかし、Nginxにはそのためのツールがついてきません。
かといって、そのためだけにApacheやそれ由来のツールをインストールするのは癪ですし、

一時的に特定のツールが使いたいということなので、Dockerの出番です。Apacheのイメージ、httpdを利用します。これにはhtpasswdコマンドがついてきます。次のようなコマンドで起動します。--rmをつけることで、セッションを閉じるとコンテナが破棄されるようになります。

docker run -it --rm httpd bash

セッションが起動したら、お待ちかねhtpasswdコマンドを実行します。コマンド1回毎に生成されるのは1行なので、-nオプションをつけて標準出力に吐かせます。下のコマンドのどちらかを実行します。違いはパスワードを後から入力するか、引数として最初から渡すかの違いです。

htpasswd -n <ユーザ名>
htpasswd -nb <ユーザ名> <パスワード>
<ユーザ名>:<ハッシュ値>

のような行が出るのでコピーし、テキストエディタに貼り付けて保存します。Nginxでは.htpasswd以外の名前でも構いません。
また、最後の空行は無視して構いません。複数ユーザの認証を行う際には、

<ユーザ名1>:<ハッシュ値>
<ユーザ名2>:<ハッシュ値>
<ユーザ名3>:<ハッシュ値>

のように並べます。少なくともUbuntu 18.04付属のNginxでは強固なBCrypt(-Bオプション)が使用不可なので注意してください。

後はnginx.confや各サイトの設定ファイルのlocation節内に以下の2行

auth_basic "<Basic認証時のメッセージ>"
auth_basic_user_file "<.htpasswdファイルのパス>"

を追加します。Nginxのリロード(nginx -s reload or systemctl reload nginx)もお忘れなく。

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0