サイトアイコン IT NEWS

同一ドメインで複数サブディレクトリにNode.js環境を構築する

Apacheリバースプロキシを利用して、同一ドメインでも複数サブディレクトリで実行可能なNode.js環境を構築し、本番、ステージング、開発環境を使い分け、それぞれの環境を起動する手順を紹介します。
本手順はUbuntu向けですが、他の環境でも応用可能です。

リバースプロキシの設定

リバースプロキシは、WEBサーバーとクライアント(ユーザーのブラウザなど)の間に位置し、クライアントからのリクエストを受け取ってサーバーへ転送する中継役の仕組みです。
通常のプロキシはクライアントの代理としてサーバーへのリクエストを中継するのに対し、リバースプロキシはサーバーの代理としてクライアントへのレスポンスを中継します。

Apacheのリバースプロキシモジュールを有効化する

Apacheリバースプロキシモジュールを有効にするために、以下の手順を実行します。

sudo a2enmod proxy
sudo a2enmod proxy_http

リバースプロキシ設定ファイルを作成する

リバースプロキシの設定を /etc/apache2/mods-enabled/proxy.conf に記載します。
以下は設定ファイルの例です。

<VirtualHost *:443>
    ServerName your-domain.com

    ProxyPass / http://localhost:3000/
    ProxyPassReverse / http://localhost:3000/

    ProxyPass /stg/ http://localhost:3001/
    ProxyPassReverse /stg/ http://localhost:3001/

    ProxyPass /dev/ http://localhost:3002/
    ProxyPassReverse /dev/ http://localhost:3002/
</VirtualHost>

この設定は、your-domain.com でアクセスした場合、ルート(/)はポート 3000 で実行中の本番環境に、/stg/ はポート 3001 で実行中のステージング環境に、/dev/ はポート 3002 で実行中の開発環境にリダイレクトします。

Apacheを再起動する

設定ファイルを変更した後、Apache再起動して設定を有効にします。

sudo systemctl restart apache2

Node.jsアプリケーションの起動

各環境でNode.jsアプリケーションを起動するため、各プロジェクトディレクトリで以下のコマンドを実行します。
例えば、本番環境の場合は以下のように行います。

cd /path/to/production/project
node app.js

ステージング環境と開発環境についても同様にアプリケーションを起動します。

これで、同一ドメインの複数サブディレクトリでNode.js環境が構築され、それぞれの環境にアクセスできるようになりました。
設定が正しく行われていることを確認し、必要に応じてポート番号やドメイン名を調整してください。

著:伊藤 康太
¥3,212 (2024/01/16 10:19時点 | Amazon調べ)

モバイルバージョンを終了