Nodejs アプリのリバース プロキシとして Nginx を構成する方法
Nodejs は、Chrome の V8 JavaScript エンジン上に構築された、軽量でスケーラブルで効率的な JavaScript フレームワークである無料のオープンソースで、イベント駆動型のノンブロッキング I/O モデルを使用します。 Nodejs は現在どこにでもあり、Web サイト、Web アプリ、ネットワーク アプリなどのソフトウェア開発に非常に人気があります。
Nginx は、オープンソースの高性能 HTTP サーバー、ロード バランサー、およびリバース プロキシ ソフトウェアです。わかりやすい構成言語を備えているため、構成が簡単です。この記事では、Nginx を Nodejs アプリケーションのリバース プロキシとして構成する方法を説明します。
こちらもお読みください: Nginx Web サーバーのセキュリティを確保、強化し、パフォーマンスを向上させるための究極のガイド
注: システムがすでに Nodejs と NPM で実行されており、アプリが特定のポートで実行されている場合、 そのままステップ 4 に進みます。
ステップ 1: Linux に Nodejs と NPM をインストールする
最新バージョンの Node.js と NPM は、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 の違いにより、$releasever
を 6 のいずれかに置き換える必要があります。 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 アプリケーションのリバース プロキシとして構成する方法を説明しました。この記事に関するご質問やご意見を共有するには、以下のフィードバック フォームを使用してください。