【问题标题】:nginx proxy to remote node.js express app in subdirectorynginx 代理到远程 node.js express 应用程序在子目录中
【发布时间】:2017-02-06 20:13:46
【问题描述】:

我完全陷入了想在一台服务器上拥有多个节点应用程序的情况。通过让应用程序在不同的端口上运行,我可以正常工作。我可以通过输入带有端口的IP地址来访问应用程序。

我想通过使用不同的子目录从我的 nginx 服务器代理应用程序,如下所示:

my.domain

location /app1 {
  proxy_pass http://10.131.6.181:3001;
}
location /app2 {
  proxy_pass http://10.131.6.181:3002;
}

为此,我必须将所有快速路由移动到 /app1 以供 application1 使用。这可行,但现在我被静态文件卡住了。

我现在可以使用http://10.131.6.181:3001/app1 访问应用程序,这很棒,但是通过http://my.domain/app1 不会加载静态文件。

静态文件可以直接http://10.131.6.181:3001/css访问,但不能通过代理http://my.domain/css访问

理想情况下,我希望不同端口上的应用程序在快速路由中没有子目录,而在代理中只有子目录。在过去的 5 个小时里,我试图把头穿过墙,但没有取得任何成果。

现在如果至少可以通过 nginx 代理获取静态文件,我会很高兴。

【问题讨论】:

  • 你可能想看看serverfault.com/questions/562756/…,也许这会有所帮助
  • 我还需要在节点服务器上设置 nginx 吗?所以我从网络服务器重定向到节点服务器,然后在节点服务器上的第二个 nginx 中再次重定向?
  • 啊,我还以为是nginx,你用的是apache吗?
  • 是的...我在我的网络服务器上使用 nginx,并认为我可以直接代理到节点服务器,但它不起作用。
  • 我测试了 302 返回,但没有成功。

标签: node.js express nginx proxy


【解决方案1】:

为任何需要的人提供更新的答案:

而不是

location /app1 {
  proxy_pass http://10.131.6.181:3001/app1;
}

使用

location /app1/ {
  proxy_pass http://10.131.6.181:3001/;
}

或者如果在本地

location /app1/ {
  proxy_pass http://localhost:3000/;
}

这是正确的方式,这样你就不需要修改 express. Express 只会收到 /app1/ 之后的部分

【讨论】:

  • 是的。抱歉更改晚了。我以前无法调查。
【解决方案2】:

在谷歌激增之后,我终于解决了。

我将目录添加到 nginx proxy_pass

my.domain

location /app1 {
  proxy_pass http://10.131.6.181:3001/app1;
}
location /app2 {
  proxy_pass http://10.131.6.181:3002/app2;
}

我不得不更改快速应用程序以使用子目录

app.use('/app1', express.static(path.join(__dirname, 'public')));

app.use('/app1'', require('./routes'));

在路由器中,我必须为所有重定向添加前缀。

router.get('/logout', function (req, res) {
  req.logout();
  res.redirect('/app1/login');
});

静态文件是从 html 中调用的

<link rel="stylesheet" href="/app1/css/style.css"/>

更改所有重定向和静态 URL 有点痛苦。我确信通过在我的 node-express 应用程序中设置全局变量有一种更智能的方法。如果有人知道更简单的方法,请发布...

【讨论】:

  • 你有没有找到更好的方法?我在同一个十字路口。 Nginx 新手,可以调整我的整个 express 应用程序,希望有一个简单的修复。
猜你喜欢
  • 2011-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-18
  • 2015-06-26
  • 2015-03-09
相关资源
最近更新 更多