首页 > 解决方案 > 我们如何使用 vhost 动态创建子域。我必须在 username.domain.com 和仅在用户注册后创建的子域中共享一些数据

问题描述

我正在尝试使用 express vhost,但我不知道如何动态创建,这意味着如果使用该用户名注册的用户创建一个子域,如 username.domain.com

我的 app.js

const express = require("express");
const app = express();
const morgan = require("morgan");
const mongoose = require("mongoose");
const bodyParser = require("body-parser");
const cors = require("cors");
var cookieParser = require("cookie-parser");
require("dotenv").config({ path: __dirname + "/.env" });
const vhost = require("vhost");

const subdomain = express();

const domain = "localhost";

app.use(vhost(`username.${domain}`, subdomain));

app.use(cookieParser());
subdomain.use(cookieParser());

app.use(morgan("dev"));
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());

subdomain.use(morgan("dev"));
subdomain.use(bodyParser.urlencoded({ extended: false }));
subdomain.use(bodyParser.json());

const userRoutes = require("./api/routes/user");

subdomain.use(userRoutes);

app.use("*", (req, res, next) => {
  const error = new Error("Not found");
  error.status = 404;
  next(error);
});

app.use("*", (error, req, res, next) => {
  res.status(error.status || 500);
  res.json({
    error: {
      message: error.message,
    },
  });
});

module.exports = app;

在这里,我手动创建子域,例如http://username.localhost:3000/user

我想在用户注册后使用 API 动态创建它

标签: node.jsvhosts

解决方案


推荐阅读