Nginxの基本認証の設定は、
auth_basic "auth"; auth_basic_user_file /var/www/auth/pass1;
とすれば、設定が出来ます。認証を複数(多段的)(ネスト的)に設定したい場合は・・・
基本認証、1ヶを入れた設定
server { listen 80; server_name examle.jp; location / { auth_basic "auth"; auth_basic_user_file /var/www/auth/pass1; root /var/www/html; index index.php index.html; location ~ \.php$ { root /var/www/html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $request_filename; include fastcgi_params; } } }
↑というふうに設定をすると、
http://example.jp/
に認証がかかります。
認証を入れ子に
http://example.jp/test/
に、認証一つ
http://example.jp/test/admin/
に、認証の2つめを設定したいと考えます。
前者は、一般テスト向けで、
後者は、テストの管理者用という想定です。
http://example.jp/test/
と
http://example.jp/test/admin/
とは、違うユーザとパスワードとなります。
http://example.jp/test/
は、
AさんとBさん
しかし、
http://example.jp/test/admin/
は、管理者のBさんは、/admin/にも入れるという想定です。
こんな場合、apache(httpd)では、
http://example.jp/test/
と
http://example.jp/test/admin/
のディレクトリに、それぞれ、
.htaccessをおけば、認証が意図通り設置できました。
Nginxで、基本認証を入れ子に
Nginxで、
http://example.jp/test/
と
http://example.jp/test/admin/
のそれぞれに、違う認証情報を設定すれば、どうすればいいでしょうか。
.htaccessではなく、
Nginxでの設定ファイルに記述します。
と、locationを複数設定して、その中に、
auth
を記述します。
server { listen 80; server_name examle.jp; root /var/www/html; index index.php index.html; location ~ \.php$ { root /var/www/html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $request_filename; include fastcgi_params; } location /test/ { auth_basic "auth"; auth_basic_user_file /var/www/auth/pass1; } location /test/admin/ { auth_basic "auth"; auth_basic_user_file /var/www/auth/adminpass; } }
としておけば、大丈夫!
/var/www/auth/pass1
Aさんと、Bさんのパスワード情報
/var/www/auth/adminpass
には、管理者である、Bさんだけのパスワード情報を書けばOK!
phpの処理、CGIの処理は、locationの外に記載をします。
認証 入れ子
規則を覚えてしまえば大丈夫!
一つ一つ、チェックして解決をしていきましょう!
楽しいNginxライフを!