【问题标题】:Hosting two Node.JS apps on same domain在同一个域上托管两个 Node.JS 应用程序
【发布时间】:2015-05-15 00:39:13
【问题描述】:

我有两个节点 js 应用程序在同一个盒子上运行,我希望它为所有路由运行第一个节点 js 应用程序,除非 URL 是 www.domain.com/blog 以转到另一个节点.js 应用程序。这甚至可以通过这种设置实现,还是我必须设置子域并使用 nginx 或其他东西?

【问题讨论】:

  • 是的,这很可能使用反向代理。

标签: node.js node-http-proxy


【解决方案1】:

您可以使用 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;
    }
  }

【讨论】:

  • 当我尝试这个时,我的主节点服务器工作得很好,但是我的另一个显示了一些承诺,但并不完全在那里。当我转到 /blog 时,我得到一个“404 Page Not Found 转到首页→”然后当我单击转到首页时,它直接将我发送到 localhost:3000。很明显那里有一些链接。一个警告是我从侦听行中删除了 default_server proxy_protocol,因为当它在那里时它坏了,这是相关的吗?另请注意,我几乎逐字复制并粘贴了您放在那里的内容并将其放入我的 nginx conf 文件中。
  • 确保您的节点服务器配置为像从 root 运行一样提供所有服务,因为从节点服务器的角度来看,它是 root。然而,html 中的链接需要基于外部 url,因此,来自 /blog。
  • 当我点击 /blogs 端点时查看日志是我得到的:博客应用日志:GET /blog 301 0.571 ms - - GET /blog/ 404 9.134 ms - - 常规应用日志:获取 /ghost/css/ghost.min.css?v=9b05545ca1 200 2ms 获取 /ghost/img/404-ghost@2x.png?v=9b05545ca1 200 2ms。两个服务器都应该被这个请求击中吗?
  • @user1200387 你的upstream设置正确了吗?
  • 我是否需要添加比您在答案中添加的更多内容?
猜你喜欢
  • 2018-12-21
  • 2014-04-19
  • 2021-08-04
  • 1970-01-01
  • 2020-09-16
  • 2012-12-10
  • 2019-07-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多