直接使用 nginx 而不是 express 托管节点应用程序有什么好处?

直接使用 nginx 而不是 express 托管节点应用程序有什么好处?

我目前正在使用 express 托管我的节点应用程序(在一个简单的代理将它们传递出去之后)

var httpProxy = require('http-proxy');
var http = require('http');
var express = require('express');

httpProxy.createServer(function (req, res, proxy) {
    var nodeVhosts = ["www.site.com"]
    var host = req.headers['host'];

    var port = nodeVhosts.indexOf(host) > -1
        ? 8080  //must be a node vhost so pass it to :8080
        : 9000; //must be an apache vhost so pass it to :9000

    proxy.proxyRequest(req, res, {host: 'localhost', port: port});
}).listen(8000);

var app = express();
var server = http.createServer(app);

var site = require('./site/app.js').site
app.use(express.vhost('www.site.com', site));

server.listen(8080);

我想将 nginx 添加为这台机器的前端,并想看看切换后是否应该使用 express。在我当前的配置中,我将使用 nginx 来替换决定 vhost 属于谁(node 还是 apache)的 http 代理部分。但是,如果我更进一步,使用 nginx 而不是 express 来托管 node web 应用程序……这会是个好主意吗?

另外,关于我使用 node web 应用程序的一些背景知识。我计划做完整的 socket.io 东西和 express(目前的形式不会传递升级请求,因此以这种方式托管的 node socket.io 应用程序总是会退回到长轮询)

先感谢您

答案1

查看希帕切:分布式 HTTP 和 websocket 代理。它用作http-proxy模块,基本上执行该Ngnix功能。我对性能不是 100% 确定,但 DotCloud最近切换Nginx

相关内容