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ライフを!


