Nginxにてベーシック(Basic)認証を有効にする手順

ソフトウエア

<景品表示法に基づく表記> 本サイトのコンテンツには、商品プロモーションが含まれている場合があります。

Nginxにてベーシック認証を有効にしたい。その手順は?

この疑問に回答します。

ベーシック認証とは、サイトのアクセス時にアクセスを制限を行うために、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)認証を有効にする手順」という記事でした。