nginxでのBasic認証の設定方法

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に置く場合

サイト全体にかける場合

server {
  listen *:80;
  server_name example.co.jp;
  #Basic Auth
  auth_basic “admin only”;
  auth_basic_user_file /etc/nginx/conf.d/.htpasswd;
}

特定のディレクトリにかける場合

server {
  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”と同じディレクトリは配置するのが、私としてはまとまり感があって、良いかなと思いました。

コメント

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