Node.js 创建到单节点应用程序路由的多个永久重定向

Node.js 创建到单节点应用程序路由的多个永久重定向,node.js,networking,routing,digital-ocean,domain-name,Node.js,Networking,Routing,Digital Ocean,Domain Name,我有一组域名,我必须为它们创建永久重定向到一个域,该域由运行在digital ocean服务器上的节点应用程序使用,假设它有3个不同的路由,如/a、/b、/c,我希望我的域分别指向/a、/b、/c 另外,我还可以提供哪些其他信息来让我的问题更清楚 我不确定这是否是最好的解决方案,但在node.js应用程序中,您可以执行以下操作: const express = require('express') const app = express() app.get('/', function(req

我有一组域名,我必须为它们创建永久重定向到一个域,该域由运行在digital ocean服务器上的节点应用程序使用,假设它有3个不同的路由,如
/a、/b、/c
,我希望我的域分别指向
/a、/b、/c


另外,我还可以提供哪些其他信息来让我的问题更清楚

我不确定这是否是最好的解决方案,但在node.js应用程序中,您可以执行以下操作:

const express = require('express')

const app = express()

app.get('/', function(req, res) {

    // remove the port number if it's there
    const host = req.get('host').split(':')[0]

    if(host === "a.com") {
        res.redirect('/a')
    }
    else if(host === "b.com") {
        res.redirect('/b')
    }
    else if(host === "c.com") {
        res.redirect('/c')
    }
    else {
        // redirect somewhere else
    }
})

app.get('/a', function(req, res) {
    res.send('hello from a')
})

app.get('/b', function(req, res) {
    res.send('hello from b')
})

app.get('/c', function(req, res) {
    res.send('hello from c')
})

app.listen(3000, function() {
    console.log('Listening on 3000')
})

您可以通过将主机文件更新到a.com、b.com和c.com点到127.0.0.1,在本地测试这一点。

您使用的是Express吗?是的,我使用的是Express 4I,我也想到了类似的解决方案,但我认为这里的重定向基于用户/机器人可以更改的请求头。这对这里有什么影响吗?另外,如果我有5个域名指向同一个数字海洋水滴,那么现在我如何在express中编写,以便我的整个应用程序服务于一个域的请求,而其他域仅用于服务特定的路由,如/a,或者可能是子域,如{abc}.xyz.comYes,这将有可能通过混淆标题来欺骗它。另一种选择是在node.js应用程序前面使用反向代理,如nginx,它基于域重定向,但我想象nginx使用与express相同的头来确定域。要回答您的编辑,如果您想将域限制为某些用户,则需要适当的安全性-我不想将域限制为某些用户,我只想让它们只路由到特定的端点。您可以使用与上面相同的方法,如果主机与您要为该路由提供服务的主机不匹配,则可以重定向,但如果您确实想这样做,也可以通过更改头来绕开。除此之外,我不敢肯定我害怕。