Nginxを使用してHTTP認証をUbuntu 14.04で設定する方法について、以下に完全かつ包括的な記事を提供します。
はじめに
HTTP認証は、ウェブアプリケーションやウェブサイトにアクセスするためにユーザー名とパスワードを要求するための方法です。これにより、特定のリソースやページにアクセスできるユーザーを制限できます。Nginxは高性能なHTTPサーバーであり、HTTP認証を設定することが簡単にできます。本記事では、Ubuntu 14.04上のNginxで基本的なHTTP認証を設定する方法を紹介します。

1. 必要なパッケージのインストール
まず最初に、Nginxとhtpasswd
ユーティリティをインストールする必要があります。htpasswd
はApacheのツールで、パスワードを安全に保存するために使用されます。
- Nginxのインストール
Ubuntu 14.04にNginxがインストールされていない場合、次のコマンドでインストールします。
bashsudo apt-get update sudo apt-get install nginx
htpasswd
ツールのインストール
次に、htpasswd
ユーティリティをインストールするためにapache2-utils
パッケージをインストールします。
bashsudo apt-get install apache2-utils
2. ユーザー認証ファイルの作成
HTTP認証を設定するには、最初にユーザー名とパスワードを含む認証ファイルを作成します。このファイルには、認証情報が保存されます。以下の手順で認証ファイルを作成します。
htpasswd
コマンドを使用して認証ファイルを作成
新しい認証ファイルを作成し、ユーザーを追加するために、以下のコマンドを実行します。このコマンドでは、/etc/nginx/.htpasswd
というファイルを作成し、ユーザーusername
を追加します。
bashsudo htpasswd -c /etc/nginx/.htpasswd username
-c
オプションは新しいファイルを作成するため、最初にユーザーを追加する際にのみ使用します。その後は-c
オプションなしでユーザーを追加できます。
パスワードの入力を求められます。確認のため、もう一度同じパスワードを入力してください。
- 複数のユーザーを追加する場合
複数のユーザーを認証ファイルに追加するには、次のコマンドを使用します。
bashsudo htpasswd /etc/nginx/.htpasswd anotheruser
3. Nginxの設定
次に、Nginxの設定ファイルを編集して、HTTP認証を有効にします。
- 設定ファイルを編集
Nginxの設定ファイルを編集するには、以下のコマンドを使用します。
bashsudo nano /etc/nginx/sites-available/default
設定ファイル内で、認証を適用したい場所を特定します。例えば、サイト全体に認証を適用する場合、server
ブロック内に次の行を追加します。
nginxserver {
listen 80;
server_name example.com;
location / {
auth_basic "Restricted Access";
auth_basic_user_file /etc/nginx/.htpasswd;
# その他の設定
}
}
auth_basic
ディレクティブは、ユーザーに表示されるメッセージを指定します。この例では「Restricted Access」というメッセージが表示されます。auth_basic_user_file
ディレクティブは、認証情報が保存されているファイルのパスを指定します。この場合、/etc/nginx/.htpasswd
がそのファイルの場所です。
- 設定をテストする
設定ファイルを保存したら、Nginxの設定にエラーがないかを確認します。
bashsudo nginx -t
エラーがなければ、Nginxを再起動して設定を反映させます。
bashsudo systemctl restart nginx
4. 動作確認
Nginxが再起動した後、ウェブブラウザを開いてサイトにアクセスしてみてください。指定したURLにアクセスすると、ポップアップが表示され、ユーザー名とパスワードを入力するように求められます。正しい認証情報を入力すると、サイトにアクセスできるようになります。
5. 設定の改善(オプション)
- アクセス制限の範囲を変更する
特定の場所やページにのみ認証を適用する場合、location
ブロックを使用して認証範囲を限定できます。例えば、/admin
ディレクトリのみ認証を要求する場合、次のように設定します。
nginxlocation /admin {
auth_basic "Restricted Access";
auth_basic_user_file /etc/nginx/.htpasswd;
}
- 認証ファイルのパーミッションを設定
セキュリティの観点から、/etc/nginx/.htpasswd
ファイルのパーミッションを適切に設定することが重要です。以下のコマンドを使用して、ファイルのパーミッションを制限します。
bashsudo chmod 640 /etc/nginx/.htpasswd
sudo chown root:www-data /etc/nginx/.htpasswd
6. トラブルシューティング
HTTP認証の設定がうまくいかない場合、以下の点を確認してください。
- Nginxが正しく再起動されたか:設定ファイルを編集した後、
sudo systemctl restart nginx
コマンドでNginxを再起動したか確認します。 - 認証情報が正しいか:
htpasswd
で設定したユーザー名とパスワードが正しいかを再確認します。 - アクセス権限:
.htpasswd
ファイルのパーミッションが適切に設定されているか確認します。
結論
Nginxを使用してUbuntu 14.04上でHTTP認証を設定する方法について、基本的な手順を紹介しました。この方法を使用することで、特定のリソースやページへのアクセスを制限し、セキュリティを強化することができます。さらに、必要に応じて設定を変更したり、アクセス範囲をカスタマイズしたりすることができます。