如何在MERN Stack中进行子域路由?

时间:2018-10-01 20:41:29

标签: javascript node.js express mern

我是node的新手并且会做出反应,并且尝试在我的MERN应用程序中进行子域路由。 我发现我无法在React中路由我的子域,所以就剩下节点了。 在节点中,有很多方法可以使用它,例如vhost或

app.get('*',(req,res)=>{
 res.sendFile(path.resolve(__dirname,'client','build','index.html'))
}) 

但是我的问题是,我必须为每个子域制作不同的应用程序吗?例如

  • 对于admin.application.com->反应中的管理应用程序
  • 对于otherdomain.application.com->发生反应的其他应用程序
  • 仅用于application.com->反应中还有一个应用程序。

这是唯一的方法吗?如果是,请问有更多经验的人可以通过这种方式告诉我更多吗? 如果没有,请指导。

2 个答案:

答案 0 :(得分:2)

每个与域相似的子域都需要拥有自己的DNS记录,因此它将被重定向到IP地址。您可以将来自不同子域的流量定向到同一服务器,并通过修改DNS记录以相同的方式处理这些流量。

如果这些子域之间没有区别,则可以只使用同一Node.js应用程序来处理所有传入流量。但是,如果您想将来自每个子域的流量安装到不同的端口或路径(例如,将admin.application.com放置到应用程序的/ admin并将otherdomain.application.com放置到/ other路径)。在这种情况下,您可以使用代理应用程序,例如nginx或HAProxy。

我的建议是,如果每个子域的业务逻辑不同,则应开发不同的应用程序。否则,您可以将所有内容都包含在同一应用程序中。

答案 1 :(得分:0)

您可以使用:

req.get('host')获取主机名。根据主机名,您可以进一步决定路由请求。