在同一域中托管两个 Node.JS 应用

Hosting two Node.JS apps on same domain

我有两个节点 js 应用程序,我 运行 在同一个盒子上,我希望它成为 运行 所有路由的第一个节点 js 应用程序,除非 url是www.domain.com/blog去其他node js应用。使用此设置甚至可以做到这一点,还是我必须设置子域并使用 nginx 或其他东西?

您可以使用 nginx 作为反向代理来实现此目的。

假设您的博客节点进程 运行 在端口 3000 上,另一个节点进程在 3001 上,一个简单的配置看起来像;

upstream blog {
   server 127.0.0.1:3000;
}


upstream other {
   server 127.0.0.1:3001;
}


server {
    listen 80;
    server_name www.domain.com;

    location /blog  {
        proxy_pass          http://blog;
        proxy_http_version  1.1;
        proxy_set_header    Host                $http_host;
        proxy_set_header    Upgrade             $http_upgrade;
        proxy_set_header    Connection          "Upgrade";
        proxy_set_header    X-Real-IP           $proxy_protocol_addr;
        proxy_set_header    X-Forwarded-For     $proxy_add_x_forwarded_for;
        proxy_set_header    X-Forwarded-Proto   tcp;
        proxy_set_header    X-NginX-Proxy       true;
    }

    location / {
        proxy_pass          http://other;
        proxy_http_version  1.1;
        proxy_set_header    Host                $http_host;
        proxy_set_header    Upgrade             $http_upgrade;
        proxy_set_header    Connection          "Upgrade";
        proxy_set_header    X-Real-IP           $proxy_protocol_addr;
        proxy_set_header    X-Forwarded-For     $proxy_add_x_forwarded_for;
        proxy_set_header    X-Forwarded-Proto   tcp;
        proxy_set_header    X-NginX-Proxy       true;
    }
  }