gpt4 book ai didi

node.js - Express.js 不使用/删除虚拟主机?

转载 作者:太空宇宙 更新时间:2023-11-03 23:08:37 24 4
gpt4 key购买 nike

上下文

我有一台具有单个 IP 的服务器,并且使用express.vhost 在同一端口上运行一些虚拟域。

app.listen (80);     
app.use (express.vhost ('www.example.com',
require('./vhosts/example/app.js').app));
app.use (express.vhost ('www.another.com',
require('./vhosts/another/app.js').app));

app.js 示例

var express = require('express');
var app = express();
app.get('*', function(req, res){
res.send('Hello Virtual Domain');
});
module.exports.app = app;

问题

如何在不重新启动应用程序的情况下释放这些虚拟域之一?

某种

app.use (var example = express.vhost ('www.example.com', 
require('./vhosts/example/app.js').app));
// LATER
app.unuse(example);

我正在尝试外包虚拟主机的管理,并为其他人开发一个工具。此应用程序监视带有虚拟域文件列表的 json。我可以轻松添加虚拟域,但我需要一种无需重新启动服务本身即可删除虚拟域的方法。

最佳答案

Express 4

您将需要 vhost 模块,因为 Express 4 不再依赖于 Connect

使用Express 4,您可以创建一个路由器来处理所有虚拟主机并将您的虚拟主机与其余路由隔离。

var vhost = require('vhost');

var vhostRouter = express.Router();
vhostRouter.use(vhost('www.example.com', exampleApp));

然后您可以拼接 vhostRouter.stack 以删除虚拟主机。

vhostRouter.stack

[ { handle: [Function: vhost],
name: 'vhost',
params: undefined,
path: undefined,
keys: [],
regexp: { /^\/?(?=\/|$)/i fast_slash: true },
route: undefined } ]

如果您使用应用程序路由器,则必须从 app._router.stack 进行拼接

<小时/>

Express 3

req.use 将中间件推送到 app.stack 上。只需从 app.stack

拼接 vhost<小时/>

注意:此功能可能在设计时并不存在。我不知道为什么。但您应该注意,因为它不受支持,并且该行为可能会在未来版本中发生变化。

关于node.js - Express.js 不使用/删除虚拟主机?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25563239/

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