nginxを使っていて、Basic認証かけたいなぁと思って、いつものようにApacheでの.htaccessファイルを設定しても、かからない。。
いくらやってもかからなくて、調べたら、.htaccessファイルは使用することが出来ないということが分かりました。
では、Basic認証を設定することが出来ないのかというと、設定することは出来ます。
Apacheのような手軽さはないものの、
・.htpasswdファイルの作成
・nginxの”.conf”ファイルの設定
で実現することが出来ます。
.htpasswdファイルの作成
Apacheでの.htaccessファイルとセットで作成する必要がある.htpasswdファイルをいつものように作成します。
.htpasswdファイル名は、”.htpasswd”でなくても問題ありません。任意の名前で大丈夫です。
※ 形式は “ID:暗号化パスワード”です。
example_user:36Qw5FVxVWdEk
【参考】
htpasswd用パス作成ツール – phpspot”
nginx.confファイルの設定
下記のように、2行追記するだけです。
※/etc/nginx/conf.d/.htpasswdに置く場合
サイト全体にかける場合
listen *:80;
server_name example.co.jp;
#Basic Auth
auth_basic “admin only”;
auth_basic_user_file /etc/nginx/conf.d/.htpasswd;
}
特定のディレクトリにかける場合
listen *:80;
server_name example.co.jp;
location /wp-admin/ {
#Basic Auth
auth_basic “admin only”;
auth_basic_user_file /etc/nginx/conf.d/.htpasswd;
}
}
ApacheとNginxでのBasic認証の設定の違い
ApacheでBasic認証をかける場合は、サイトのドキュメントルート等、かけるディレクトリ直下に”.htaccess”と”.htpasswd”ファイルを配置する必要がありましたが、nginxで運用するのであれば、”.htpasswd”ファイルの配置ディレクトリは、nginx.confファイルと同じディレクトリに配置すると良いと思います。
そのため、バーチャルホストで区切っている場合、ファイル名を”.htpasswd_virtualhost_name”のようにして、”nginx.conf”と同じディレクトリは配置するのが、私としてはまとまり感があって、良いかなと思いました。
コメント