序章
Nginxは、アクティブに使用されている主要なWebサーバーの1つです。 それとその商用版であるNginxPlusは、Nginx、Incによって開発されました。
このチュートリアルでは、Ubuntu 14.04でHTTP基本認証方式を使用して、Nginxを利用したWebサイトへのアクセスを制限する方法を学習します。 HTTP基本認証は、単純なユーザー名と(ハッシュされた)パスワード認証方法です。
前提条件
このチュートリアルを完了するには、次のものが必要です。
-
sudo非rootユーザーを含む1つのCentOS7ドロップレット。これは、この初期サーバーセットアップチュートリアルに従ってセットアップできます。
-
Nginxがサーバーにインストールおよび構成されています。これは、このNginxインストールチュートリアルに従って実行できます。
ステップ1—HTTPDツールのインストール
ターゲットWebサイトへのアクセスを制限するパスワードを構成するには、htpassword
コマンドが必要です。 このコマンドはhttpd-tools
パッケージの一部であるため、最初のステップはそのパッケージをインストールすることです。
- sudo yum install -y httpd-tools
ステップ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/
ディレクトリにあるターゲットWebサイトの構成ファイルに含まれている必要があります。 nano
またはお気に入りのテキストエディタを使用してそのファイルを開きます。
- sudo nano /etc/nginx/nginx.conf
server セクションで、両方のディレクティブを追加します。
. . .
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をリロードします。
- sudo systemctl reload nginx
次に、お気に入りのブラウザでhttp://your_server_ip/
に移動して、セキュリティで保護したWebサイトにアクセスしてみてください。 認証ウィンドウ(auth_basic
に設定した文字列である「PrivateProperty」と表示されます)が表示され、正しい資格情報を入力するまでWebサイトにアクセスできません。 設定したユーザー名とパスワードを入力すると、デフォルトのNginxホームページが表示されます。
結論
NginxWebサイトの基本的なアクセス制限を完了しました。 この手法とアクセス制限の他の手段の詳細については、Nginxのドキュメントを参照してください。