この疑問に回答します。
ベーシック認証とは、サイトのアクセス時にアクセスを制限を行うために、IDとPasswordを用いた認証のことです。
関連記事 Nginx クライアント証明書による認証の設定方法(OpenSSL)
関連記事 Let’s Encrypt ワイルドカード証明書の設定方法:すべてのサブドメインを保護
ベーシック認証は容易に構築できるので、特定のユーザーのみアクセス許可を行いたいテストサイトなどではよく使う機能です。手順をまとめましたのでご参考にしてください。
Nginxによるベーシック(Basic)認証
Nginxによるベーシック認証を有効にするためには、Apacheのベーシック認証で構築するコマンドを利用します。
Apacheと同じコマンドを利用できるので、ApacheとNginxはほぼ同じ手順でベーシック認証を構築することができます。
htpasswdコマンドでファイルを作成する
NginxとApacheでファイルに互換性があります。よって、Apacheのベーシック認証で利用するファイル「.htpasswd」をそのまま利用することができます。初めに「.htpasswd」ファイルを作成します。
コマンド(htpasswd)のインストール
Apacheのコマンドツールをインストールしてください。
私はCentOSを利用しています。他のUNIX系OSでも同じ手順で設定できると思いますので、ぜひチャレンジしてみてください。
CentOSの場合
# yum install -y httpd-tools
Ubuntuの場合
# apt-get install apache2-utils
認証ファイル(.htpasswd)の作成
htpasswdコマンドを利用して.htpasswdを作成します。ユーザー名とパスワードを定義し、nginxで読み込ませるように設定を行います。
usernameは、認証時に使うIDを入力してください。同様にpassowrdも、認証時に使う文字列を入力してください。
# htpasswd -c /etc/nginx/.htpasswd [username] New password: [パスワードを入力] Re-type new password: [パスワードを入力] Adding password for user username
Nginxにベーシック(Basic)認証を設定する
ベーシック認証で利用する認証ファイル(.htpasswd)をNginxのconfファイルに記載します。
server {
listen 80 default_server;
server_name example.jp;
root /usr/share/nginx/html;
# 認証領域名
auth_basic "Basic Authentication";
# .htpasswdファイルの場所
auth_basic_user_file /etc/nginx/.htpasswd;
...省略...
}
設定が終わったら、設定ファイルの整合性を確認します。
nginxに設定ファイルを読み込まし反映させます。
# nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful # systemctl reload nginx
特定IPアドレスにベーシック認証を除外する手順
特定のIPアドレスからのアクセスにはベーシック認証をかけたくない場合があるかと思います。例えば社内からのアクセスや、指定のグローバルIPアドレスなど
ベーシック認証を除外できる「satisfy any」ディレクティブを利用します。.confファイルを次のように記述します。
server {
listen 80 default_server;
server_name example.jp;
root /usr/share/nginx/html;
satisfy any;
allow 許可するIP;
allow 許可するIP;
...省略...
deny all;
# 認証領域名
auth_basic "Basic Authentication";
# .htpasswdファイルの場所
auth_basic_user_file /etc/nginx/.htpasswd;
...省略...
}
ベーシック認証を実施しない許可IPアドレスを順に記載して、最後に全部を拒否するように記載します。
以上、「Nginxにてベーシック(Basic)認証を有効にする手順」という記事でした。