4

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

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

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

4

2 回答 2

0

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

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-->(您的 Sony 登录页面)

要在本地测试子域,您需要将它们添加到您的/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

/etc/hostsWindows 上文件的等价物是%systemroot%\system32\drivers\etc

有关在本地设置 localhost 域的更多详细信息,请查看此处

您可以使用子域包做更多事情。它接受通配符,如果您需要这样的功能,您可以使用它来检查 API 密钥。

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

于 2020-10-31T13:39:04.277 回答
-1
于 2013-08-21T07:15:47.677 回答