[Linux] Nginx に Basic 認証を設定する方法

nginx_basic_auth_top

この記事には広告を含む場合があります。

記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。

Linux 環境にベーシック認証をインストールする

サイトへのアクセス制限を行うときにベーシック認証はとても便利です。

ベーシック認証は Apache の拡張機能のため、初期状態では Nginx では利用できません。ただ作業手順を知っていれば導入は簡単に行えるため、ベーシック認証の導入手順をまとめていきます。

 

ベーシック認証を設定する手順

では早速ベーシック認証の設定方法を確認していきます。

作業手順1:ベーシック認証のモジュールをインストールします。

CentOS / Redhat 系で利用する「yum」コマンドと Ubuntu / Debian 系で利用する「apt」コマンドでは、インストールするパッケージ名が異なります。

CentOS / Redhat系の場合

yum install -y httpd-tools

Ubuntu / Debian系の場合

apt install apache2-utils

 

作業手順2:ベーシック認証で登録するユーザーを追加する

「htpasswd」コマンドを使用して、ベーシック認証に追加するファイルを設定します。

htpasswd -c /etc/nginx/.htpasswd [追加するユーザー名]

 

作業手順3:Nginx の設定ファイルにベーシック認証の設定を追加する

location / {
    auth_basic            "Auth";
    auth_basic_user_file  "/etc/nginx/.htpasswd";
}

作業手順4:Nginx を再起動する

systemctl restart nginx

 

インストール手順の実行履歴と詳細説明

インストール手順を実行した際のコマンドの実行履歴と詳細説明を行います。
なお動作検証に利用したのは、AWS にて CentOS7 と Ubuntu18.04 です。

 

ではまずはベーシック認証のモジュールをインストールします。設定手順やコマンドはほぼ同じですが、インストールするモジュールが環境により異なります。

CentOS7 の場合の実行履歴

[root@hostname]# yum install -y httpd-tools
Loaded plugins: fastestmirror
Determining fastest mirrors
 * base: ftp-srv2.kddilabs.jp
 * extras: ftp-srv2.kddilabs.jp
 * updates: ftp-srv2.kddilabs.jp
base                                  | 3.6 kB  00:00:00
extras                                | 3.4 kB  00:00:00
updates                               | 3.4 kB  00:00:00
(1/2): updates/7/x86_64/primary_db    | 3.4 MB  00:00:00
(2/2): extras/7/x86_64/primary_db     | 188 kB  00:00:00
Package httpd-tools-2.4.6-88.el7.centos.x86_64 already installed and latest version
Nothing to do

Ubuntu18.04 の場合の実行履歴

root@hostname:~# apt install apache2-utils
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  libapr1 libaprutil1
The following NEW packages will be installed:
  apache2-utils libapr1 libaprutil1
0 upgraded, 3 newly installed, 0 to remove and 31 not upgraded.
Need to get 259 kB of archives.
After this operation, 863 kB of additional disk space will be used.

(中略)

Processing triggers for man-db (2.8.3-2ubuntu0.1) ...
Setting up apache2-utils (2.4.29-1ubuntu4.6) ...
Processing triggers for libc-bin (2.27-3ubuntu1) ...

 

ベーシック認証を通過できるユーザーを登録します。サンプルの実行履歴では hoge ユーザーを追加しています。

ユーザー追加の実行履歴

root@hostname:~# htpasswd -c /etc/nginx/.htpasswd hoge
New password: 
Re-type new password: 
Adding password for user hoge
root@hostname:~# cat /etc/nginx/.htpasswd
hoge:$apr1$DTYTMsYr$tw3FxQ2EAurYeVzRP5QKd.

 

Nginx の設定ファイルにベーシック認証の設定を追加します。
ベーシック認証を設定したいパスに「auth_basic」と「auth_basic_user_file」を記述することにより、ベーシック認証が有効になります。サンプルではドメイン直下にベーシック認証を設定しています。

nginx に追加する内容

server {
    listen 80;
    server_name example.com;

    root /var/www/;
    index index.html index.htm;

    location / {
        auth_basic            "Auth";
        auth_basic_user_file  "/etc/nginx/.htpasswd";
    }
}

 

Nginx の設定を反映する前に、念のため Nginx の設定内容に誤りが無いかを確認します。

Nginx 設定ファイルの文法チェック

root@hostname:# nginx -t -c /etc/nginx/nginx.conf 
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

 

最後に Nginx を再起動すればベーシック認証の設定完了です。

Nginx の再起動

root@hostname:# systemctl restart nginx

 

お疲れさまでした。

 

 

Linuxの知識については下記の本も参考になるので、スキルアップにお役立てください。

created by Rinker
三宅 英明 (著)、大角 祐介 (著)
ページ数: 440ページ
出版社:SBクリエイティブ
発売日:2015/06/06

出典:amazon