Nginx 基本認証 入れ子の設定

この記事は約4分で読めます。

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

タイトルとURLをコピーしました