性能下降
相反。如果您对节点所做的只是代理,那么过载是微不足道的(与 apache 相比)。我确实有与您非常相似的设置(小型虚拟机、3 个旧版 apache 网站、node.js 代理和增强)。到目前为止,apache 是资源消耗者,而不是我的节点应用程序,它仍然代理/过滤/拦截每个传入的 http 请求
这是我的设置:
主代理
它处理所有传入的请求(对于任意数量的域):我个人使用nodejitsu's http-proxy,它非常强大且易于配置
var http = require('http');
var httpProxy = require('http-proxy');
var options = {
hostnameOnly: true,
router: {
'domain1.com': '127.0.0.1:8081',
'www.domain1.com': '127.0.0.1:8081',
'subdomain1.domain1.com': '127.0.0.1:8082',
(...)
'domain2.com': '127.0.0.1:8090',
(...)
}
}
var mainProxy = httpProxy.createServer(options);
mainProxy.listen(8080);
您可以直接从选项对象重定向到 apache,或者在不同端口上的另一个(中间件)节点应用程序中进行更多 url 解析。
警告:如果您不希望以“root”身份安装/运行节点(我强烈建议在生产环境中这样做):将端口 80 重定向到具有 IPTABLE 的其他端口该代理运行的指令(假设是 8080)(请参阅此处以获取 detailed example of Iptable directives)。我的,在 debian 压缩上,读取:
#REDIRECT port 80 to 8080
$IPTABLES -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
节点应用
它使用正则表达式或您需要的任何东西进行一些 URL 解析。例如:重定向到一些(旧版)apache 服务器(在我的情况下)只提供尚未由“开发中”节点应用程序提供的旧版内容。
守护进程
有几种解决方案可以让节点作为守护进程运行。我最喜欢的两个是:
-
nodemon 将监视节点应用程序文件夹和子文件夹中的所有文件以进行更改,并在文件更改时重新启动节点应用程序。非常适合开发环境
-
forever(再次由 Nodejitsu 提供)将在您的节点应用程序停止时重新启动它。这是非常可定制的。
还有: