Express.js unuse /删除虚拟主机?
上下文
我有一个单一的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);
我正试图把虚拟主机的pipe理工作外包出去,为别人开发一个工具。 此应用程序使用虚拟域文件列表监控json。 我可以轻松地添加虚拟域,但我需要一种方法来删除它们,而无需重新启动服务本身。
快递4
因为Express 4
不再依赖Connect
所以需要vhost
模块。
使用Express 4
您可以创build一个路由器来处理所有的虚拟主机,并将虚拟主机与其他路由进行隔离。
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
进行拼接
快递3
req.use
将中间件推到app.stack
。 从app.stack
简单地拼接虚拟主机
注意:此function可能不存在devise。 我不知道为什么。 你应该知道,因为它不被支持,行为可能在未来的版本中改变。
- React-Router Router.HistoryLocation刷新页面
- 如何只更新MongoDB数据库中的对象的一些属性
- 在Express中检索多个variables
- 从JSON文件中删除JSON对象
- NodeJS / Express PUT请求失败:请求的资源上没有“Access-Control-Allow-Origin”标头
- 在Node,Express JS中发送URL参数
- TypeError:不能使用'in'运算符search男性中的'_id'
- Sails js:如何在Sails js的单个模型中定义两个到两个不同数据库的MySQL连接?
- 在使用Raygun的快递处理程序后,如何closures我的stream程?