プロキシおよび仮想ホスト(VHosts)をNGINX構成ファイルを介して管理すると、仮想ホストとWebサービスの数が増えるにつれて煩雑になります。このプロセスをどのように簡略化できますか?NGINXプロキシマネージャー(NPM)。
詳細を読んで、NGINXプロキシマネージャーWebコンソールを使用して仮想ホストを作成、管理、およびセキュリティで保護する方法を学びます。
前提条件
このチュートリアルは実演形式で行われます。一緒に進めたい場合は、以下をご用意ください:
- A Linux machine to host NGINX Proxy Manager and the proxied webserver- This tutorial uses Fedora 35.
- コンテナーを実行するためのDocker– このチュートリアルではDocker v20.10.12を使用しています。このチュートリアルでDockerをインストールしていない場合は、代替手段のいずれかをインストールしてください。
- プロキシマネージャーおよびその要件を自動的に設定するためのDocker Compose– このチュートリアルではバージョン1.29.2を使用しています。Docker Composeをインストールして、記事の残りを進めてください。
- ドメイン名は仮想ホストのエンドポイントとして機能します。このチュートリアルでは、プライベートドメイン名testweb.comを使用しています。ドメイン名がLinuxホストマシンを指すようにしてください。また、公に登録されたドメイン名を使用することもできます。
- まず、仮想ホストをセキュリティで保護するためにSSL証明書と証明書キーが必要です。まだ持っていない場合は、証明書とそれに関連するキーファイルを作成してください。
NGINX Proxy Managerのセットアップ
NGINX Proxy Managerはオペレーティングシステムにインストールするパッケージではありません。代わりに、NPMはDockerでデプロイするアプリケーションです。これがDockerとDocker Composeが主要な要件である理由です。
以下の手順に従ってNGINX Proxy Managerのセットアップを開始してください。
1. SSHまたはデスクトップ環境を使用してLinuxサーバーにログインします。
2. 好きなテキストエディタを使用して、docker-compose.ymlというYAMLファイルを作成して開きます。ここではviを使用します。
3. 以下のコードをエディタにコピーして貼り付けます。このコードには、最新のnginx-proxy-managerイメージをダウンロードしてセットアップするための指示が含まれています。ファイルを保存して閉じて、コマンドラインに戻ります。
4. docker-composeを実行して、指定された指示に従ってコンテナをバックグラウンドで起動します(-dオプションを使用)。

5. コンテナが実行中であることを確認するために、以下のコマンドを実行します。
正常に動作していれば、以下のスクリーンショットのように、プロキシマネージャコンテナに対応する実行中のプロセスが表示されます。

管理パネルへのアクセス
NGINX Proxy Managerが実行されているはずです。初期管理ユーザーのセットアップを行うために、NPM管理パネルにアクセスできるようになりました。
1. ブラウザウィンドウを開き、http://<host_ip>:admin-ui-port> に移動します。便宜上、このチュートリアルでは IP アドレスの代わりに localhost を使用します。つまり、http://localhost:81、管理パネルを起動します。
2. 初期のデフォルトの資格情報で [email protected] の電子メールアドレスと changeme のパスワードでログインします。

3. 好きなようにデフォルトのユーザーアカウントを変更します。このチュートリアルでは、フルネームとニックネームを保持し、メールを [email protected] に変更します。ユーザーの詳細を保存するには、保存をクリックします。

4. 下の「パスワードを変更」に新しいパスワードを入力します。8文字以上のパスワードを入力し、保存をクリックします。

ユーザーアカウントに行った変更が表示されるはずです。

Webサーバーの展開
初期設定が完了したので、次のステップは、仮想ホスト用のWebサーバーを起動することです。Docker Compose を使用して Apache Web サービスコンテナを迅速に起動する手順に従ってください。
以前に作成した docker-compose.yml ファイルをテキストエディタで開きます。次のコードを docker-compose.yml ファイルに追加します。
同じファイルを使用する利点は、既存のコンテナネットワークを変更して、別のネットワークではなく app2 という名前の httpd ベースのコンテナを追加で登録することです。
ファイルの内容は、以下のスクリーンショットのように見えるはずです。ファイルを保存してエディタを終了してください。

docker-compose
を実行して、コンテナをバックグラウンドで起動します(-d
)。
以下のスクリーンショットと同様のフィードバックが表示されるはずで、第2のコンテナの作成が確認されます。

新しいバーチャルホストの作成
現在、実行中のウェブサービスがあります。このセクションは、NGINX Proxy Managerの公開ポートを介してウェブサーバへのアクセスを有効にすることを目的としています。
1. NGINX Proxy Managerの管理パネルにログインします。
2. ホスト —> プロキシホストをクリックします。

3. プロキシホストの追加をクリックして、ウェブサーバのバーチャルホストの作成を開始します。

4. 次の詳細を使用して、バーチャルホストを設定するために新しいプロキシホストフォームを記入します。
- ドメイン名: ウェブサーバにアクセスできるドメイン名。この例では、testweb.comドメインを使用しています。
- フォワードホスト名 / IP: Webサーバーのホスト名またはIPアドレス。このチュートリアルではDocker Composeを使用してコンテナをセットアップしたため、
app2
を使用するだけで十分です。 docker-compose.yml で指定した名前を入力してください。
- フォワードポート: Webサーバーがリクエストを待機するポート。この場合、Apache httpd コンテナのデフォルトのエクスポートポートである
80
を使用します。
- 一般的な脆弱性をブロック: NPMを使用して設定されたプロキシは一般的な脆弱性をブロックできます。このオプションをオンにします。
- アクセスリスト: プロキシの背後にあるWebサーバーへのアクセスを制御するための事前に指定されたリスト。このチュートリアルでは、Webサーバーにアクセスできるように、選択肢を「Publicly Accessible」にしておいてください。
画面上のフォームは以下のスクリーンショットと一致するはずです。フォームの入力が完了したら保存をクリックしてください。

これでリストに1つのプロキシホストがあります。

5. 最後に、新しいブラウザタブまたはウィンドウで仮想ホストのURLに移動します。このチュートリアルでは、URLは http://testweb.com です。仮想ホストが正常に動作していれば、デフォルトのホームページが表示されるはずです。

SSL証明書のプロビジョニング
Webサーバーをデプロイし、実行が確認されました。ただし、この時点ではウェブサイトにはまだSSL証明書がありません。内部のプライベートウェブサイトを実行する場合はSSL証明書なしでも問題ないかもしれませんが、公開ウェブサイトをホストする場合は同じことがあってはなりません。
ウェブサイトの接続が暗号化されるようにするために、次に仮想ホストにSSL証明書をインストールします。心配しないでください。これはNGINX Proxy Managerから行います。ただし、既存のPEM形式のSSL証明書と証明書キーが必要です。
1. NGINX Proxy Manager管理パネルからSSL証明書タブをクリックします。

2. 右上隅にある「SSL証明書の追加」をクリックして、カスタムを選択します。

カスタム証明書の代わりに、Let’s Encryptを選択して、直接オンザフライでLet’s Encrypt証明書をリクエストすることもできます。ただし、これを行うには、ウェブサイトとDNSレコードが公開されている必要があります。そうでない場合、証明書の取得は失敗します。
3. 以下のようにカスタム証明書の追加フォームを入力します。
- 名前: 管理パネルで証明書のための人間にわかりやすい名前。このチュートリアルでは、Testweb Certという名前を使用しています。

- 証明書キー: このキーは、このチュートリアルの要件として生成した証明書ファイルに含まれています。
参照をクリックして、キーファイルに移動します。

キーファイルをダブルクリックします。このチュートリアルでは、証明書キーの名前はmytesthttpd.keyです。

- 証明書: 証明書ファイルそのもの、.crtまたは.pem形式のいずれか。
参照をクリックして、ファイルエクスプローラで証明書に移動します。

証明書ファイルをダブルクリックして開きます。このチュートリアルでは、キーファイルの名前はmytesthttpd.pemです。

4. 3つのフィールドにすべて記入したら、フォームは以下のスクリーンショットのようになります。カスタム証明書を提出するには、保存をクリックしてください。
このチュートリアルでは中間証明書は使用しません。今のところそのフィールドを無視してください。

5. 今、Hosts → プロキシホストをクリックしてください。

6. ケバブメニューアイコンをクリックし、[編集] をクリックします。この時点で SSL 列が「HTTPのみ」と表示されていることに注意してください。

7. 下の図のように、[プロキシホストの編集] ウィンドウで SSL タブを選択します。SSL 証明書のドロップダウンメニューからプロビジョニングした証明書を選択してください。このチュートリアルでは、以下のスクリーンショットのように Testweb Cert です。

8. 前に追加した証明書を SSL 証明書のドロップダウンメニューから選択します。以下のように、選択する証明書名は Testweb Cert です。

9. 以下のスクリーンショットに表示されているように、利用可能なすべての強化された SSL オプションを有効にし、保存をクリックします。
SSL を強制するオプションは、クライアントが最初に HTTP URL にアクセスしようとした場合でも、すべての接続を HTTPS に強制またはアップグレードします。

A word of warning with HSTS. As browsers will include the site on an internal inclusion list, your site will no longer work under non-SSL conditions. Therefore, make sure that you have everything set up the correct way first.
SSL 列の値が「HTTP のみ」から「カスタム」に変更されたことに気付くでしょう。

10. 最後に、ブラウザタブを開き、仮想ホストのドメインに再度移動します。このチュートリアルでは、http://testweb.com です。接続は自動的に HTTPS にアップグレードされるはずです。

おめでとうございます!NGINX Proxy Manager を使用した展開またはセキュリティで保護された仮想ホストの設定が完了しました。
NGINX Proxy Manager ユーザーの追加
チームで作業を行う場合や、他の人がNPMで仮想ホストを管理することを期待する場合は、ユーザーアクセス権を提供する必要があります。このセクションでは、特にチーム設定でNPMの管理を拡張し、ユーザーを作成し、役割と権限を割り当てます。
1. 管理パネルのホームページでユーザーをクリックします。

2. ユーザーカードの右上隅にあるユーザーの追加をクリックします。

3. 対応するフィールドにユーザーのフルネーム(テストユーザー)、ニックネーム(testuser)、メールアドレス([email protected])を入力し、保存をクリックします。
このユーザーは完全な管理者ではないため、管理者の役割を有効にしないでください。代わりにカスタム権限を割り当てます。新しいユーザーを追加するには、保存をクリックしてください。

4. ユーザーに付与する権限を設定します。このチュートリアルでは、新しいユーザーには次の権限設定があります。
- ユーザーが作成したアイテムのみ表示できます。
- Proxy Hostsを作成、編集、削除できます。
- リダイレクトホストを作成、編集、削除できます。
- 404ホストは表示できません。
- ストリームは表示できません。
- アクセスリストを表示できます。
- SSL証明書を作成、編集、削除できます。
権限セットは以下のスクリーンショットと似ているはずです。新しいユーザーを追加するには、保存をクリックします。

5. そして、新しいユーザーのキャベツメニューをクリックして、ユーザーとしてサインインします。この手順により、現在のユーザーコンテキストがテストユーザーに切り替わります。

新しいユーザーの視点から管理パネルを探索してください。このユーザーの権限に基づいて、タブとリソースが少なく表示されるはずです。

結論
このNGINX Proxy Managerチュートリアルを終えておめでとうございます。GUIから仮想ホストを管理し、ユーザーを作成して協力を可能にする方法を学びました!NGINX仮想ホストを手動で構成ファイルを編集して管理することに戻る予定はありますか?
さらなる学習を試すためのアイディアがあります。マニュアルの構成に従う代わりに、学んだことを適用してNGINX Proxy Managerを使用して仮想ホストを展開および構成してみてください。NGINXサブドメインまたは複数のドメインの提供方法を読んで、手動の構成ではなく、学んだことを適用して仮想ホストを展開および構成してみてください。