gpt4 book ai didi

node.js - 如何将多个子域重定向到同一个正在运行的 Express 应用程序

转载 作者:太空宇宙 更新时间:2023-11-03 22:40:25 26 4
gpt4 key购买 nike

我正在 NodeJS 中构建一个 SaaS 应用程序并使用 Express 框架。该网站的各个成员都有一个带有自定义子域的 URL 用于登录。

例如,一家名为 ABC Corp 的公司可以通过 abc.example.com 登录,另一家名为 Sony 的公司可以通过 sony.example.com 登录

知道如何将多个子域重定向/路由到同一个应用程序实例吗?

最佳答案

您可以使用express-subdomain包裹。假设您有一个 routes 文件夹,其中包含 abc.jssony.js 文件,分别导出 abc 和 sony 子域的登录路由,您在 index.js 或 Express 服务器正在监听的任何文件中可能包含以下内容。

const subdomain = require('express-subdomain');
const express = require('express');
const app = express();
const abcRoutes = require('./routes/abc');
const sonyRoutes = require('./routes/sony');
const port = process.env.PORT || 3000;

// use the subdomain middleware
app.use(subdomain('abc', abcRoutes));
app.use(subdomain('sony', sonyRoutes));

// a simple get route on the top-level domain
app.get('/', (req, res) => {
res.send('Welcome to the Home Page!');
});

// add any other needed routes

module.exports = app.listen(port, () => {
console.log('Server listening on port ' + port);
});

然后您的服务器将按预期运行并工作
http://example.com/ --> 欢迎来到主页!
http://abc.example.com/login --> (您的 abc 登录页面)
http://sony.example.com/login --> (您的索尼登录页面)

要在本地测试子域,您需要将它们添加到您的 /etc/hosts 文件中。 (它需要 sudo 权限)

127.0.0.1      localhost
127.0.0.1 example.com
127.0.0.1 abc.example.com
127.0.0.1 sony.example.com

Windows 上 /etc/hosts 文件的等效文件位于 %systemroot%\system32\drivers\etc

有关在本地设置本地主机域的更多详细信息 check here

您可以使用子域包执行更多操作。它接受通配符,如果您需要这样的功能,您可以使用它来检查 API key 。

查看 express-subdomain 包的文档 https://npmjs.com/package/express-subdomain

关于node.js - 如何将多个子域重定向到同一个正在运行的 Express 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18350899/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com