我完全陷入了一种情况,我想在一台服务器上安装多个节点应用程序。通过让应用程序在不同的端口上运行,我可以正常工作。我可以通过输入带端口的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 for 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代理获取静态文件。
任何需要的人的更新答案:
代替
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将仅收到/ app1 /之后的部分
谷歌激增之后我终于解决了这个问题。
我将目录添加到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 app中设置全局变量有一种更聪明的方法。如果有人知道更简单的方法,请发布...