Alf*_*doy 4 debian nginx reverse-proxy apache-2.2
我有一个用于不再使用的旧网站的“存档”服务器,但我想将它们作为我的简历/作品集的一部分保持在线。
他们需要不同的 apache 和 php 版本和设置,所以我在不同的端口上运行多个 apache,在 nginx 反向代理后面。
但是,这些网站很少有访问者。两次访问之间可能需要几天甚至几周的时间,所以我认为让所有这些 apache 实例一直运行是对内存和 CPU 的巨大浪费。
我想做的是让 nginx 按需启动相应的 apache 服务器。也许是这样的:
我希望 apache 守护进程以 PHP 作为模块加载。我希望访问者浏览网站时体验既快又好,但是,第一次请求的加载时间几秒钟是没有问题的。有些站点是 AJAX 密集型的,因此不能为每个请求加载 apache。
我没有找到任何明显的方法来做到这一点。有没有人对类似的设置有任何想法或经验?是否有其他反向代理软件(除了 nginx)可以做到这一点?
(当然,我还需要一种在不活动时关闭 apache 的方法,但这对于 cron 作业来说非常简单,只需检查 apache 的 access.log 中是否发生了某些事情。)
顺便说一句.. 服务器正在运行 Debian Lenny。
编辑/我的解决方案:
我通过使用https://github.com/nodejitsu/node-http-proxy为 node.js编写脚本解决了这个问题。
// I'm using http-proxy to make the proxying:
var server = httpProxy.createServer(function (req, res, proxy) {
var domain = getDomain(req);
proxy.proxyRequest(req, res, {
host: '127.0.0.1',
port: configuration[domain].port
});
}).listen(80);
// And a error handler, which will start apache on deman:
server.proxy.on('proxyError', function(err, req, res) {
if (err.errno == 'ECONNREFUSED') {
// Start apache using exec()
}
});
Run Code Online (Sandbox Code Playgroud)
另一种方法可能是通过inetd.conf 中定义的脚本调用来启动 apache 。
这种方法在按需启动 Lighttpd一文中有详细介绍,虽然它是面向 Lighttpd 的,但可能适用于您的 apache 版本。
上面的文章包含用于启动 Lighttpd 网络服务器的脚本,参考给定的端口,其中 lighttpd 可能需要替换为 apachectl。它还详细介绍了有关如何自动关闭以使其不会永远运行的一些想法。
如果这种方法适用于您的情况,您可以考虑将您的 inetd.conf 配置行和脚本添加到您的帖子中以供将来的读者使用。
| 归档时间: |
|
| 查看次数: |
899 次 |
| 最近记录: |