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環境が構築され、それぞれの環境にアクセスできるようになりました。
設定が正しく行われていることを確認し、必要に応じてポート番号やドメイン名を調整してください。
- Original:https://minory.org/nodejs-reverse-proxy.html
- Source:minory
- Author:管理者