ウェブサイト検索

Nodejs アプリのリバース プロキシとして Nginx を構成する方法


Nodejs は、Chrome の V8 JavaScript エンジン上に構築された、軽量でスケーラブルで効率的な JavaScript フレームワークである無料のオープンソースで、イベント駆動型のノンブロッキング I/O モデルを使用します。 Nodejs は現在どこにでもあり、Web サイト、Web アプリ、ネットワーク アプリなどのソフトウェア開発に非常に人気があります。

Nginx は、オープンソースの高性能 HTTP サーバー、ロード バランサー、およびリバース プロキシ ソフトウェアです。わかりやすい構成言語を備えているため、構成が簡単です。この記事では、Nginx を Nodejs アプリケーションのリバース プロキシとして構成する方法を説明します。

こちらもお読みください: Nginx Web サーバーのセキュリティを確保、強化し、パフォーマンスを向上させるための究極のガイド

: システムがすでに NodejsNPM で実行されており、アプリが特定のポートで実行されている場合、 そのままステップ 4 に進みます。

ステップ 1: Linux に Nodejs と NPM をインストールする

最新バージョンの Node.jsNPM は、Nodejs Web サイトによって管理されている公式 NodeSource Enterprise Linux、Fedora、Debian、および Ubuntu バイナリ ディストリビューション リポジトリからインストールできます。次に示すように、最新の Nodejs および NPM パッケージをインストールできるようにするには、それをシステムに追加する必要があります。

Debian/Ubuntu の場合

---------- Install Node.js v11.x ---------- 
curl -sL https://deb.nodesource.com/setup_11.x | sudo -E bash -
sudo apt-get install -y nodejs

---------- Install Node.js v10.x ----------
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt-get install -y nodejs

CentOS/RHEL および Fedora の場合

---------- Install Node.js v11.x ---------- 
curl -sL https://rpm.nodesource.com/setup_11.x | bash -

---------- Install Node.js v10.x ----------
curl -sL https://rpm.nodesource.com/setup_10.x | bash -

ステップ 2: Nodejs アプリケーションの作成

デモンストレーションの目的で、図に示すようにポート 5000 で実行される「sysmon」 というサンプル アプリケーションを作成します。

sudo mkdir -p /var/www/html/sysmon
sudo vim /var/www/html/sysmon/server.js

次のコードをコピーして server.js ファイルに貼り付けます (192.168.43.31 をサーバー IP に置き換えます)。

const http = require('http');

const hostname = '192.168.43.31';
const port = 5000;

const server = http.createServer((req, res) => {
	res.statusCode = 200;
  	res.setHeader('Content-Type', 'text/plain');
  	res.end('Sysmon App is Up and Running!\n');
});

server.listen(port, hostname, () => {
  	console.log(`Server running at http://${hostname}:${port}/`);
});

ファイルを保存して終了します。

次に、次のコマンドを使用してノード アプリケーションを起動します (終了するには、Ctrl+x を押します)。

sudo node /var/www/html/sysmon/server.js
OR
sudo node /var/www/html/sysmon/server.js &   #start it in the background to free up your terminal

次に、ブラウザを開いて、URL http://198.168.43.31:5000 でアプリケーションにアクセスします。

ステップ 3: Linux に Nginx リバース プロキシをインストールする

以下に示すように、 公式リポジトリから最新バージョンのNginx をインストールします。

Debian/Ubuntu の場合

/etc/apt/sources.list.d/nginx.list というファイルを作成し、次の行をそれに追加します。

deb http://nginx.org/packages/ubuntu/ bionic nginx
deb-src http://nginx.org/packages/ubuntu/  bionic nginx

次に、次のようにリポジトリ署名キーを追加し、システム パッケージ インデックスを更新して、nginx パッケージをインストールします。

wget --quiet http://nginx.org/keys/nginx_signing.key && sudo apt-key add nginx_signing.key
sudo apt update
sudo apt install nginx

CentOS/RHEL および Fedora の場合

/etc/yum.repos.d/nginx.repo という名前のファイルを作成し、以下のいずれかの設定を貼り付けます。

CentOS
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=0 enabled=1
RHEL
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/rhel/$releasever/$basearch/ gpgcheck=0 enabled=1

: CentOS と RHEL の違いにより、$releasever6 のいずれかに置き換える必要があります。 OS のバージョンに応じて (6.x の場合) または 7 (7.x の場合)。

次に、リポジトリ署名キーを追加し、示されているように nginx パッケージをインストールします。

wget --quiet http://nginx.org/keys/nginx_signing.key && rpm --import nginx_signing.key
yum install nginx

Nginx を正常にインストールしたら、Nginx を起動し、システム起動時の自動起動を有効にして、起動して実行されているかどうかを確認します。

---------- On Debian/Ubuntu ---------- 
sudo systemctl status nginx
sudo systemctl enable nginx
sudo systemctl status nginx

---------- On CentOS/RHEL ---------- 
systemctl status nginx
systemctl enable nginx
systemctl status nginx

システム ファイアウォールを実行している場合は、ポート 80 (HTTP)443 (HTTPS)、および 5000 (ノード アプリ) を開く必要があります。 Web サーバーはクライアントの接続リクエストをリッスンします。

---------- On Debian/Ubuntu ---------- 
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 5000/tcp
sudo ufw reload

---------- On CentOS/RHEL ---------- 
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp
firewall-cmd --permanent --add-port=5000/tcp
firewall-cmd --reload 

ステップ 4: Nodejs アプリケーションのリバース プロキシとして Nginx を構成する

ここで、図に示すように、Node アプリのサーバー ブロック構成ファイルを /etc/nginx/conf.d/ の下に作成します。

sudo vim /etc/nginx/conf.d/sysmon.conf 

次の設定をコピーして貼り付けます (192.168.43.31 をサーバー IP に変更し、tecmint.lan をドメイン名に変更します)。

server {
    listen 80;
    server_name sysmon.tecmint.lan;

    location / {
        proxy_set_header   X-Forwarded-For $remote_addr;
        proxy_set_header   Host $http_host;
        proxy_pass         http://192.168.43.31:5000;
    }
}

変更を保存してファイルを終了します。

最後に、Nginx サービスを再起動して、最近の変更を有効にします。

sudo systemctl restart nginx
OR
systemctl restart nginx

ステップ 5: Web ブラウザ経由で Nodejs アプリケーションにアクセスする

これで、URL でリッスンしているポートを指定しなくても、Node アプリにアクセスできるようになります。これは、ユーザーにとって非常に便利なアクセス方法です。

http://sysmon.tecmint.lan 

テスト ドメイン名が機能するには、/etc/hosts ファイルを使用してローカル DNS を設定し、ファイルを開いて以下の行を追加する必要があります (192.168.43.31 を忘れずに変更してください) はサーバー IP に置き換え、tecmint.lan は以前と同様にドメイン名に置き換えます)。

192.168.43.31 sysmon.tecmint.lan

それだけです!この記事では、Nginx を Nodejs アプリケーションのリバース プロキシとして構成する方法を説明しました。この記事に関するご質問やご意見を共有するには、以下のフィードバック フォームを使用してください。