如何在一个 nginx 配置中设置两个 Node.js 应用程序

如何在一个 nginx 配置中设置两个 Node.js 应用程序

设想:

第一个 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”等)

当我使用下面的配置时 - 仅适用于第一个应用程序,第一个应用程序运行良好,当我点击“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;
  }
}

如何向此配置添加另一个(第二个)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;
  }

相关内容