序章

Nginxは、アクティブに使用されている主要なWebサーバーの1つです。 それとその商用版であるNginxPlusは、Nginx、Incによって開発されました。

このチュートリアルでは、Ubuntu 14.04でHTTP基本認証方式を使用して、Nginxを利用したWebサイトへのアクセスを制限する方法を学習します。 HTTP基本認証は、単純なユーザー名と(ハッシュされた)パスワード認証方法です。

前提条件

このチュートリアルを完了するには、次のものが必要です。

ステップ1—HTTPDツールのインストール

ターゲットWebサイトへのアクセスを制限するパスワードを構成するには、htpasswordコマンドが必要です。 このコマンドはhttpd-toolsパッケージの一部であるため、最初のステップはそのパッケージをインストールすることです。

  1. sudo yum install -y httpd-tools

ステップ2—HTTP基本認証クレデンシャルの設定

このステップでは、Webサイトを実行しているユーザーのパスワードを作成します。

そのパスワードと関連するユーザー名は、指定したファイルに保存されます。 パスワードは暗号化され、ファイルの名前は任意の名前にすることができます。 ここでは、ファイル/etc/nginx/.htpasswdとユーザー名nginxを使用します。

パスワードを作成するには、次のコマンドを実行します。

  1. sudo htpasswd -c /etc/nginx/.htpasswd nginx

新しく作成されたファイルの内容をチェックして、ユーザー名とハッシュ化されたパスワードを確認できます。

  1. cat /etc/nginx/.htpasswd
例/etc/nginx/.htpasswd
nginx:$apr1$ilgq7ZEO$OarDX15gjKAxuxzv0JTrO/

ステップ3—Nginx構成を更新する

HTTP基本認証クレデンシャルを作成したので、次のステップは、それを使用するようにターゲットWebサイトのNginx構成を更新することです。

HTTP基本認証は、auth_basicおよびauth_basic_user_fileディレクティブによって可能になります。 auth_basicの値は任意の文字列であり、認証プロンプトに表示されます。 auth_basic_user_fileの値は、手順2で作成されたパスワードファイルへのパスです。

両方のディレクティブは、通常/etc/nginx/ディレクトリにあるターゲットWebサイトの構成ファイルに含まれている必要があります。 nanoまたはお気に入りのテキストエディタを使用してそのファイルを開きます。

  1. sudo nano /etc/nginx/nginx.conf

server セクションで、両方のディレクティブを追加します。

/etc/nginx/nginx.conf
. . .
server {
	listen       80 default_server;
	listen       [::]:80 default_server;
	server_name  _;
	root         /usr/share/nginx/html;

	auth_basic "Private Property";
	auth_basic_user_file /etc/nginx/.htpasswd;
. . .

ファイルを保存して閉じます。

ステップ4—セットアップのテスト

変更を適用するには、最初にNginxをリロードします。

  1. sudo systemctl reload nginx

次に、お気に入りのブラウザでhttp://your_server_ip/に移動して、セキュリティで保護したWebサイトにアクセスしてみてください。 認証ウィンドウ(auth_basicに設定した文字列である「PrivateProperty」と表示されます)が表示され、正しい資格情報を入力するまでWebサイトにアクセスできません。 設定したユーザー名とパスワードを入力すると、デフォルトのNginxホームページが表示されます。

結論

NginxWebサイトの基本的なアクセス制限を完了しました。 この手法とアクセス制限の他の手段の詳細については、Nginxのドキュメントを参照してください