リバースプロキシは、1つ以上のアップストリームサーバーからクライアントのリソースを取得するサーバーです。通常、プライベートネットワークのファイアウォールの背後に配置され、クライアントの要求をこれらのアップストリームサーバーに転送します。リバースプロキシは、Webアプリケーションのセキュリティ、パフォーマンス、および信頼性を大幅に向上させます。
NodeJSまたはAngularで記述された最新のWebアプリケーションの多くは、独自のスタンドアロンサーバーで実行できますが、負荷分散などの高度な機能が不足しています。 、セキュリティ 、および加速 これらのアプリケーションのほとんどが要求すること。高度な機能を備えたNGINXは、NodeJSまたはAngularアプリケーションのリクエストを処理する際にリバースプロキシとして機能できます。
NGINXリバースプロキシサーバー
このチュートリアルでは、NGINXをノードまたはAngularアプリケーションのリバースプロキシサーバーとして使用する方法について説明します。次の図は、リバースプロキシサーバーがどのように機能し、クライアント要求を処理して応答を送信するかについての概要を示しています。

Nginxリバースプロキシ
前提条件
- ここからのチュートリアルに従って、すでにNGINXをインストールしています。
仮定
- NGINXサーバーにはパブリックドメインからアクセスできます。
- NodeまたはAngularアプリケーションは、プライベートネットワークの別のシステム(アップストリームサーバー)で実行され、NGINXサーバーからアクセスできます。単一のシステムでセットアップを行うことは非常に可能ですが。
- チュートリアルでは、
SUBDOMAIN.DOMAIN.TLD
などの変数を使用します およびPRIVATE_IP
。適切な場所でそれらを独自の値に置き換えます。
NodeJSアプリケーション
ご使用の環境にすでにNGINXがインストールされていると仮定して、NGINXリバースプロキシを介してアクセスされるNodeJSアプリケーションの例を作成しましょう。まず、プライベートネットワークにあるシステムにノード環境を設定します。
ノードのインストール
NodeJSと最新バージョンのnpm(ノードパッケージマネージャー)のインストールを続行する前に、それがすでにインストールされているかどうかを確認してください。
# node --version
# npm --version
上記のコマンドがNodeJSとNPMのバージョンを返す場合は、次のインストール手順をスキップして、サンプルのNodeJSアプリケーションの作成に進みます。
NodeJSとNPMをインストールするには、次のコマンドを使用します。
# apt-get install nodejs npm
インストールしたら、NodeJSとNPMのバージョンをもう一度確認します。
# node --version
# npm --version
サンプルノードアプリケーションを作成する
NodeJS環境の準備ができたら、ExpressJSを使用してサンプルアプリケーションを作成します。したがって、ノードアプリケーション用のフォルダーを作成し、ExpressJSをインストールします。
# mkdir node_app
# cd node_app
# npm install express
お気に入りのテキストエディタを使用して、app.js
を作成します 次のコンテンツを追加します。
# vi app.js
const express = require('express')
const app = express()
app.get('/', (req, res) => res.send('Hello World !'))
app.listen(3000, () => console.log('Node.js app listening on port 3000.'))
次のコマンドを使用してノードアプリケーションを実行します。
# node app.js
ポート番号3000にcurlクエリを実行して、アプリケーションがローカルホストで実行されていることを確認します。
# curl localhost:3000
Hello World !
この時点で、NodeJSアプリケーションはアップストリームサーバーで実行されます。最後のステップでは、上記のノードアプリケーションのリバースプロキシとして機能するようにNGINXを構成します。とりあえず、Angularアプリケーションの作成に進みましょう。その手順を以下に示します。
角度のあるアプリケーション
Angularは、typescriptを使用してWebアプリケーションを開発するためのもう1つのJavaScriptフレームワークです。一般に、Angularアプリケーションには、付属のスタンドアロンサーバーを介してアクセスします。ただし、本番環境でこのスタンドアロンサーバーを使用することにはいくつかの欠点があるため、リバースプロキシをAngularアプリケーションの前に配置して、より適切に提供します。
角度環境のセットアップ
AngularはJavaScriptフレームワークであるため、バージョン8.9を超えるNodejsがシステムにインストールされている必要があります。したがって、Angular CLIのインストールを続行する前に、ターミナルで次のコマンドを発行してノード環境をすばやくセットアップしてください。
# curl -sL https://deb.nodesource.com/setup_10.x | sudo bash -
# apt-get install nodejs npm
次に、プロジェクトの作成、任意のAngularアプリケーション用のアプリケーションおよびライブラリコードの生成に役立つAngularCLIのインストールに進みます。
# npm install -g @angular/cli
これで、Angular環境に必要なセットアップが完了しました。次のステップでは、Angularアプリケーションを作成します。
Angularアプリケーションを作成する
次のAngularCLIコマンドを使用してAngularアプリケーションを作成します。
# ng new angular-app
新しく作成されたAngularディレクトリに移動し、ホスト名とポート番号を指定してWebアプリケーションを実行します。
# cd angular-app
# ng serve --host PRIVATE_IP --port 3000
ポート番号3000にcurlクエリを実行して、Angularアプリケーションがローカルホストで実行されていることを確認します。
# curl PRIVATE_IP:3000
この時点で、Angularアプリケーションはアップストリームサーバーで実行されます。次のステップでは、上記のAngularアプリケーションのリバースプロキシとして機能するようにNGINXを構成します。
NGINXをリバースプロキシとして構成する
NGINX仮想ホスト構成ディレクトリに移動し、リバースプロキシとして機能するサーバーブロックを作成します。以前にNGINXをインストールしたシステムには、インターネット経由でアクセスできることを忘れないでください。つまり、パブリックIPがシステムに接続されています。
# cd /etc/nginx/sites-available
# vi node_or_angular_app.conf
server {
listen 80;
server_name SUBDOMAIN.DOMAIN.TLD;
location / {
proxy_pass https://PRIVATE_IP:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
上記の構成のproxy_passディレクティブにより、サーバーはリバースプロキシをブロックします。ドメインSUBDOMAIN.DOMAIN.TLD
宛てのすべてのトラフィック ルートロケーションブロック(/)と一致するものは、https://PRIVATE_IP:3000
に転送されます。 ノードまたはAngularアプリケーションが実行されている場所。
NodeJSとAngularアプリの両方のNGINXリバースプロキシ?
上記のサーバーブロックは、ノードまたはAngularアプリケーションのいずれかのリバースプロキシとして機能します。 NGINXリバースプロキシを使用してノードとAngularアプリケーションの両方に同時にサービスを提供するには、両方に同じシステムを使用する場合は、2つの異なるポート番号でそれらを実行するだけです。
ノードとAngularアプリケーションを実行するために2つの別々のアップストリームサーバーを使用することも非常に可能です。さらに、server_name
の値が一致する別のNGINXサーバーブロックも作成する必要があります およびproxy_pass
ディレクティブ。
推奨読書 :NGINX構成ファイルを理解する。
上記のサーバーブロックに構文エラーがないか確認し、同じものを有効にします。最後に、NGINXをリロードして新しい設定を適用します。
# nginx -t
# cd /etc/nginx/sites-enabled
# ln -s ../sites-available/node_or_angular_app.conf .
# systemctl reload nginx
次に、お気に入りのWebブラウザでhttps://SUBDOMAIN.DOMAIN.TLD
を指定します。 、NodeまたはAngularアプリケーションからのウェルカムメッセージが表示されます。

Angularウェルカムページ
概要
NodeJSまたはAngularアプリケーション用にNGINXリバースプロキシを構成する方法は以上です。これで、Let’s Encryptなどの無料のSSL証明書を追加して、アプリケーションを保護できます。