nginxでBasic認証の設定方法
Apacheのhtpasswdはインストールせずにopensslでパスワードファイル作成する方法です。
ユーザーファイルの作成とパーミッション設定
$ sudo echo "ユーザ名:$(openssl passwd -apr1 パスワード)" > /usr/share/nginx/html/user_passwords $ sudo chmod 400 /usr/share/nginx/html/user_passwords $ sudo chown nginx /usr/share/nginx/html/user_passwords
ここでは、nginx(Nginxの実行しているシステムユーザー)のみのパーミッションに設定しています。
また簡易なプレビューサイトを想定して、ドキュメントルート以下においてますが、
実際の運用では適時DocumentRootより上位ディレクトリなどへの配置に変更ください。
(まぁ運用の場合、そもそもBasicな認証で良いのかというのは、)
Nginxのコンフィグファイルの設定
server { listen 80; server_name example.com; root /usr/share/nginx/html/example.com; index index.php index.html; auth_basic "preview site"; auth_basic_user_file /usr/share/nginx/html/user_passwords; location / { 〜略〜 } }
server { ~ } のコンテキストに記載してこのドメイン全てに反映。
http{ ~ } , location { ~ } に書いて、サーバーのhttp全体、特定ディレクトへの反映も可能