Apacheのリバースプロキシを利用して、同一ドメインでも複数サブディレクトリで実行可能なNode.js環境を構築し、本番、ステージング、開発環境を使い分け、それぞれの環境を起動する手順を紹介します。
本手順はUbuntu向けですが、他の環境でも応用可能です。
リバースプロキシの設定
リバースプロキシは、WEBサーバーとクライアント(ユーザーのブラウザなど)の間に位置し、クライアントからのリクエストを受け取ってサーバーへ転送する中継役の仕組みです。
通常のプロキシはクライアントの代理としてサーバーへのリクエストを中継するのに対し、リバースプロキシはサーバーの代理としてクライアントへのレスポンスを中継します。
Apacheのリバースプロキシモジュールを有効化する
Apacheのリバースプロキシモジュールを有効にするために、以下の手順を実行します。
1 2 |
sudo a2enmod proxy sudo a2enmod proxy_http |
リバースプロキシ設定ファイルを作成する
リバースプロキシの設定を /etc/apache2/mods-enabled/proxy.conf
に記載します。
以下は設定ファイルの例です。
1 2 3 4 5 6 7 8 9 10 11 12 |
<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を再起動して設定を有効にします。
1 |
sudo systemctl restart apache2 |
Node.jsアプリケーションの起動
各環境でNode.jsアプリケーションを起動するため、各プロジェクトディレクトリで以下のコマンドを実行します。
例えば、本番環境の場合は以下のように行います。
1 2 |
cd /path/to/production/project node app.js |
ステージング環境と開発環境についても同様にアプリケーションを起動します。
これで、同一ドメインの複数サブディレクトリでNode.js環境が構築され、それぞれの環境にアクセスできるようになりました。
設定が正しく行われていることを確認し、必要に応じてポート番号やドメイン名を調整してください。
コメント