Ubuntu14.04でNginxを使用して基本HTTP認証を設定する方法
序章
Nginxは、アクティブに使用されている主要なWebサーバーの1つです。 それとその商用版であるNginxPlusは、Nginx、Incによって開発されました。
このチュートリアルでは、Ubuntu 14.04でHTTP基本認証方式を使用して、Nginxを利用したWebサイトへのアクセスを制限する方法を学習します。 HTTP基本認証は、単純なユーザー名と(ハッシュされた)パスワード認証方法です。
前提条件
このチュートリアルを完了するには、次のものが必要です。
-
sudo非rootユーザーを含む1つのUbuntu14.04ドロップレット。これは、この初期サーバーセットアップチュートリアルに従ってセットアップできます。
-
Nginxがサーバーにインストールおよび構成されています。これは、このNginxの記事に従って行うことができます。
ステップ1—Apacheツールのインストール
ターゲットWebサイトへのアクセスを制限するパスワードを構成するには、htpassword
コマンドが必要です。 このコマンドはapache2-utils
パッケージの一部であるため、最初のステップはそのパッケージをインストールすることです。
- sudo apt-get install apache2-utils
ステップ2—HTTP基本認証クレデンシャルの設定
このステップでは、Webサイトを実行しているユーザーのパスワードを作成します。
そのパスワードと関連するユーザー名は、指定したファイルに保存されます。 パスワードは暗号化され、ファイルの名前は任意の名前にすることができます。 ここでは、ファイル/etc/nginx/.htpasswd
とユーザー名nginxを使用します。
パスワードを作成するには、次のコマンドを実行します。 認証してから、パスワードを指定して確認する必要があります。
- sudo htpasswd -c /etc/nginx/.htpasswd nginx
新しく作成されたファイルの内容をチェックして、ユーザー名とハッシュ化されたパスワードを確認できます。
- cat /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/sites-available
ディレクトリにあるターゲットWebサイトの構成ファイルに含まれている必要があります。 nano
またはお気に入りのテキストエディタを使用してそのファイルを開きます。
- sudo nano /etc/nginx/sites-available/default
location セクションで、両方のディレクティブを追加します。
. . .
server_name localhost;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
# Uncomment to enable naxsi on this location
# include /etc/nginx/naxsi.rules
auth_basic "Private Property";
auth_basic_user_file /etc/nginx/.htpasswd;
}
. . .
ファイルを保存して閉じます。
ステップ4—セットアップのテスト
変更を適用するには、最初にNginxをリロードします。
- sudo service nginx reload
次に、お気に入りのブラウザでhttp://your_server_ip/
に移動して、セキュリティで保護したWebサイトにアクセスしてみてください。 認証ウィンドウ(auth_basic
に設定した文字列である「PrivateProperty」と表示されます)が表示され、正しい資格情報を入力するまでWebサイトにアクセスできません。 設定したユーザー名とパスワードを入力すると、デフォルトのNginxホームページが表示されます。
結論
NginxWebサイトの基本的なアクセス制限を完了しました。 この手法とアクセス制限の他の手段の詳細については、Nginxのドキュメントを参照してください。