NGINX Proxy Managerを使用したシンプルな仮想ホスト管理

プロキシおよび仮想ホスト(VHosts)をNGINX構成ファイルを介して管理すると、仮想ホストとWebサービスの数が増えるにつれて煩雑になります。このプロセスをどのように簡略化できますか?NGINXプロキシマネージャー(NPM)

詳細を読んで、NGINXプロキシマネージャーWebコンソールを使用して仮想ホストを作成、管理、およびセキュリティで保護する方法を学びます。

前提条件

このチュートリアルは実演形式で行われます。一緒に進めたい場合は、以下をご用意ください:

NGINX Proxy Managerのセットアップ

NGINX Proxy Managerはオペレーティングシステムにインストールするパッケージではありません。代わりに、NPMはDockerでデプロイするアプリケーションです。これがDockerとDocker Composeが主要な要件である理由です。

以下の手順に従ってNGINX Proxy Managerのセットアップを開始してください。

1. SSHまたはデスクトップ環境を使用してLinuxサーバーにログインします。

2. 好きなテキストエディタを使用して、docker-compose.ymlというYAMLファイルを作成して開きます。ここではviを使用します。

vi docker-compose.yml

3. 以下のコードをエディタにコピーして貼り付けます。このコードには、最新のnginx-proxy-managerイメージをダウンロードしてセットアップするための指示が含まれています。ファイルを保存して閉じて、コマンドラインに戻ります。

version: '3'
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped #プロキシマネージャがクラッシュしても生き残るようにする
    ports:
      #ホストマシンからアクセス可能なコンテナのポートを許可する
      - '80:80'
      - '81:81' #管理パネルのポート
      - '443:443'
    volumes:
      #次のコンテナディレクトリをホスト上の対応するディレクトリにマッピングする
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt

4. docker-composeを実行して、指定された指示に従ってコンテナをバックグラウンドで起動します(-dオプションを使用)。

docker-compose up -d
Running Docker Compose to set up NGINX Proxy Manager container

5. コンテナが実行中であることを確認するために、以下のコマンドを実行します。

docker ps

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

Listing running Docker containers

管理パネルへのアクセス

NGINX Proxy Managerが実行されているはずです。初期管理ユーザーのセットアップを行うために、NPM管理パネルにアクセスできるようになりました。

1. ブラウザウィンドウを開き、http://<host_ip>:admin-ui-port> に移動します。便宜上、このチュートリアルでは IP アドレスの代わりに localhost を使用します。つまり、http://localhost:81、管理パネルを起動します。

2. 初期のデフォルトの資格情報で [email protected] の電子メールアドレスと changeme のパスワードでログインします。

Logging in for the first time

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

Changing admin user default credentials

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

Changing the default password

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

Viewing the user list in NGINX Proxy Manager

Webサーバーの展開

初期設定が完了したので、次のステップは、仮想ホスト用のWebサーバーを起動することです。Docker Compose を使用して Apache Web サービスコンテナを迅速に起動する手順に従ってください。

以前に作成した docker-compose.yml ファイルをテキストエディタで開きます。次のコードを docker-compose.yml ファイルに追加します。

同じファイルを使用する利点は、既存のコンテナネットワークを変更して、別のネットワークではなく app2 という名前の httpd ベースのコンテナを追加で登録することです。

app2:
    #コンテナ間のネットワーキングに使用される、内部参照のカスタムコンテナ名。 
    image: 'httpd:latest'
    restart: unless-stopped

ファイルの内容は、以下のスクリーンショットのように見えるはずです。ファイルを保存してエディタを終了してください。

Adding a web server deployment directive

docker-composeを実行して、コンテナをバックグラウンドで起動します(-d)。

docker-compose up -d

以下のスクリーンショットと同様のフィードバックが表示されるはずで、第2のコンテナの作成が確認されます。

Creating and starting the Web server with Docker Compose

新しいバーチャルホストの作成

現在、実行中のウェブサービスがあります。このセクションは、NGINX Proxy Managerの公開ポートを介してウェブサーバへのアクセスを有効にすることを目的としています。

1. NGINX Proxy Managerの管理パネルにログインします。

2. ホスト —> プロキシホストをクリックします。

Creating a VHOST: Opening the Proxy Host card

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

Creating a VHOST: Adding a Proxy Host

4. 次の詳細を使用して、バーチャルホストを設定するために新しいプロキシホストフォームを記入します。

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

画面上のフォームは以下のスクリーンショットと一致するはずです。フォームの入力が完了したら保存をクリックしてください。

Adding the Proxy Host details

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

List of proxy hosts

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

Accessing the Webserver via the Proxy

SSL証明書のプロビジョニング

Webサーバーをデプロイし、実行が確認されました。ただし、この時点ではウェブサイトにはまだSSL証明書がありません。内部のプライベートウェブサイトを実行する場合はSSL証明書なしでも問題ないかもしれませんが、公開ウェブサイトをホストする場合は同じことがあってはなりません。

ウェブサイトの接続が暗号化されるようにするために、次に仮想ホストにSSL証明書をインストールします。心配しないでください。これはNGINX Proxy Managerから行います。ただし、既存のPEM形式のSSL証明書と証明書キーが必要です。

1. NGINX Proxy Manager管理パネルからSSL証明書タブをクリックします。

Opening the SSL Certificates tab

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

Adding a custom SSL certificate

カスタム証明書の代わりに、Let’s Encryptを選択して、直接オンザフライでLet’s Encrypt証明書をリクエストすることもできます。ただし、これを行うには、ウェブサイトとDNSレコードが公開されている必要があります。そうでない場合、証明書の取得は失敗します。

3. 以下のようにカスタム証明書の追加フォームを入力します。

  • 名前: 管理パネルで証明書のための人間にわかりやすい名前。このチュートリアルでは、Testweb Certという名前を使用しています。
Provisioning SSL Certificates: Naming the certificate
  • 証明書キー: このキーは、このチュートリアルの要件として生成した証明書ファイルに含まれています。

参照をクリックして、キーファイルに移動します。

Provisioning SSL Certificates: Selecting the key file

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

Provisioning SSL Certificates: Selecting the key file
  • 証明書: 証明書ファイルそのもの、.crtまたは.pem形式のいずれか。

参照をクリックして、ファイルエクスプローラで証明書に移動します。

Provisioning SSL Certificates: Selecting the certificate file

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

Provisioning SSL Certificates: Selecting the certificate file

4. 3つのフィールドにすべて記入したら、フォームは以下のスクリーンショットのようになります。カスタム証明書を提出するには、保存をクリックしてください。

このチュートリアルでは中間証明書は使用しません。今のところそのフィールドを無視してください。

Saving the SSL certificate

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

Provisioning SSL Certificates: Applying the certificate to a Proxy Host

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

Editing a proxy Host

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

Selecting a certificate for a Proxy Host

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

Selecting a certificate for a Proxy Host

9. 以下のスクリーンショットに表示されているように、利用可能なすべての強化された SSL オプションを有効にし、保存をクリックします。

SSL を強制するオプションは、クライアントが最初に HTTP URL にアクセスしようとした場合でも、すべての接続を HTTPS に強制またはアップグレードします。

Enabling enhanced SSL features

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 のみ」から「カスタム」に変更されたことに気付くでしょう。

Confirming changes in the SSL setting for a Proxy Host

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

Testing HTTPS access with a browser

おめでとうございます!NGINX Proxy Manager を使用した展開またはセキュリティで保護された仮想ホストの設定が完了しました。

NGINX Proxy Manager ユーザーの追加

チームで作業を行う場合や、他の人がNPMで仮想ホストを管理することを期待する場合は、ユーザーアクセス権を提供する必要があります。このセクションでは、特にチーム設定でNPMの管理を拡張し、ユーザーを作成し、役割と権限を割り当てます。

1. 管理パネルのホームページでユーザーをクリックします。

Extending NPM with Users: Opening the Users tab

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

Adding a user

3. 対応するフィールドにユーザーのフルネーム(テストユーザー)、ニックネーム(testuser)、メールアドレス([email protected])を入力し、保存をクリックします。

このユーザーは完全な管理者ではないため、管理者の役割を有効にしないでください。代わりにカスタム権限を割り当てます。新しいユーザーを追加するには、保存をクリックしてください。

Adding user particulars

4. ユーザーに付与する権限を設定します。このチュートリアルでは、新しいユーザーには次の権限設定があります。

  • ユーザーが作成したアイテムのみ表示できます。
  • Proxy Hostsを作成、編集、削除できます。
  • リダイレクトホストを作成、編集、削除できます。
  • 404ホストは表示できません。
  • ストリームは表示できません。
  • アクセスリストを表示できます。
  • SSL証明書を作成、編集、削除できます。

権限セットは以下のスクリーンショットと似ているはずです。新しいユーザーを追加するには、保存をクリックします。

Saving the user’s permissions

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

Signing in as the new user

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

Confirming access permissions

結論

このNGINX Proxy Managerチュートリアルを終えておめでとうございます。GUIから仮想ホストを管理し、ユーザーを作成して協力を可能にする方法を学びました!NGINX仮想ホストを手動で構成ファイルを編集して管理することに戻る予定はありますか?

さらなる学習を試すためのアイディアがあります。マニュアルの構成に従う代わりに、学んだことを適用してNGINX Proxy Managerを使用して仮想ホストを展開および構成してみてください。NGINXサブドメインまたは複数のドメインの提供方法を読んで、手動の構成ではなく、学んだことを適用して仮想ホストを展開および構成してみてください。

Source:
https://adamtheautomator.com/nginx-proxy-manager/