1 つの nginx 構成で 2 つの Node.js アプリを設定する方法

1 つの nginx 構成で 2 つの Node.js アプリを設定する方法

シナリオ:

最初のnode.jsアプリは127.0.0.1:8888で実行されており、ルートは1つだけ'ドメイン.com/track.gif'

2 番目の node.js アプリは 127.0.0.1:3000 で実行されており、最初のアプリによって収集された統計情報のダッシュボードであり、「domain.com」(および「domain.com/login」や「domain.com/dashboard」などの他のルート) で利用できます。

以下の設定を最初のアプリのみに使用すると、最初のアプリは正常に動作し、「domain.com/track.gif」にアクセスすると、この追跡 gif ファイルが提供されます。

upstream tracker {
  server 127.0.0.1:8888;
}

server {
  listen 0.0.0.0:80;
  server_name www.domain.com domain.com;
  access_log /var/log/nginx/domain_access.log;
  error_log /var/log/nginx/domain_error.log;

  location /track.gif {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-NginX-Proxy true;
    proxy_pass http://tracker;
    proxy_redirect off;
  }
}

「domain.com/」や「domain.com/dashboard」や「domain.com/login」などのルートのルーティング全体を処理するために、この構成に別の (2 番目の) node.js アプリを追加するにはどうすればよいでしょうか?

前もって感謝します!

答え1

2 番目のロケーション ブロックを追加します。これは、/track.gif 以外のすべてのパスと一致します。

upstream tracker {
  server 127.0.0.1:8888;
}

server {
  listen 0.0.0.0:80;
  server_name www.domain.com domain.com;
  access_log /var/log/nginx/domain_access.log;
  error_log /var/log/nginx/domain_error.log;

  location /track.gif {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-NginX-Proxy true;
    proxy_pass http://tracker;
    proxy_redirect off;
  }

  location / {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-NginX-Proxy true;
    proxy_pass http://127.0.0.1:3000;
    proxy_redirect off;
  }

関連情報