Как настроить два приложения Node.js в одной конфигурации nginx

Как настроить два приложения Node.js в одной конфигурации nginx

Сценарий:

Первое приложение node.js запущено на 127.0.0.1:8888 и обслуживаеттолько один маршрут'domain.com/track.gif'

Второе приложение node.js работает на 127.0.0.1:3000 и представляет собой панель управления для статистики, собранной первым приложением. Она доступна на «domain.com» (и других маршрутах, таких как «domain.com/login» или «domain.com/dashboard» и т. д.)

Когда я использую эту конфигурацию ниже (только для первого приложения), первое приложение работает отлично, оно выдает этот файл отслеживания gif, когда я нажимаю «domain.com/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;
  }
}

Как добавить еще одно (второе) приложение node.js в эту конфигурацию, чтобы позаботиться обо всей маршрутизации для таких маршрутов, как «domain.com/», «domain.com/dashboard» или «domain.com/login»?

Заранее спасибо!

решение1

Добавьте второй блок местоположения. Он будет соответствовать любому пути, кроме /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;
  }

Связанный контент