在通过 VHOST 连接的 node.js 应用程序之间共享 404 页面
Posted
技术标签:
【中文标题】在通过 VHOST 连接的 node.js 应用程序之间共享 404 页面【英文标题】:Sharing 404 page across node.js apps connected via VHOST 【发布时间】:2012-02-03 03:30:41 【问题描述】:我对 node.js 和一般的 web 编程有点陌生,所以如果我问奇怪的问题,请原谅:D
这就是我设置 express node.js 项目的方式。 我有一个*** app.js 只是为了将流量重定向到几个子域:
var app = module.exports = express.createServer(options);
app.use(express.vhost('blog.localhost', require('./apps/blog/blog.js')));
app.use(express.vhost('app1.localhost', require('./apps/app1/app1.js')));
app.use(express.vhost('login.localhost', require('./apps/login/login.js')));
在通过 require() 包含的每个子应用程序中,我只是返回一个新的快速服务器:
module.exports = express.createServer(options);
设置 404 页面最优雅的方式是什么?当我只是使用单个应用程序时,我只是使用了
app.use(function(req, res, next)
res.render('404',
);
);
但是如果我使用这种方法,我将不得不为每个应用程序创建一个 404.jade,并且我不喜欢代码中无用的重复。知道如何在多个虚拟主机之间共享一个 404 逻辑吗?
【问题讨论】:
【参考方案1】:您有 3 个主机需要 3 个路由文件。我的建议是从外部文件中要求每个 404 路由。 这样一来,每个主机都会有 404 路由,但它只会驻留在一个地方。
例子:
404 路由文件 - 404.js
module.exports = function (app, req, res, options)
app.get('/404', function(req, res, next)
res.render('404', options: options );
);
主机 A 的路由
// define other routes here
...
// you pass the app, req, res as params
// the last param is for local vars sent to the view
require('./routes/404.js')(app, req, res, host: 'HostA' );
【讨论】:
感谢您的快速回复。我试图避免这种依赖,因为在主机 A 中运行的应用程序必须知道主应用程序的目录结构。也许这是实现这一目标的唯一方法。 除非你想在任何地方复制它,这是唯一的方法。以上是关于在通过 VHOST 连接的 node.js 应用程序之间共享 404 页面的主要内容,如果未能解决你的问题,请参考以下文章
将 Node.js 的 Express 与 vhost 一起使用时出现意外错误
NGROK + WEB-SERVER + NODE.JS + WEBSOCKET + NPM