Node.js-具有WebSocket代理和SSL支持的良好WebServer?

| 我真的很喜欢node.js,但是当您要运行多个websocket服务器并使它们都可以通过端口80进行访问时,它的确非常复杂。 我当前正在运行nginx,但是无法根据URL将传入的Websocket连接代理到不同的Websocket服务器,因为nginx不支持http 1.1。 我曾经尝试实现一个具有自己功能的Web服务器,但是在标头传递等方面确实非常复杂。另一件事是SSL支持。支持它并不容易。 那么,有人知道做我提到的事情的一个好的解决方案吗? 谢谢你的帮助!
已邀请:
使用nodejitsu的node-http-proxy取得了不错的效果。如他们的自述文件所述,它们似乎支持WebSockets。 WebSockets的示例(取自其GitHub自述文件):
var http = require(\'http\'),
    httpProxy = require(\'http-proxy\');

//
// Create an instance of node-http-proxy
//
var proxy = new httpProxy.HttpProxy();

var server = http.createServer(function (req, res) {
  //
  // Proxy normal HTTP requests
  //
  proxy.proxyRequest(req, res, {
    host: \'localhost\',
    port: 8000
  })
});

server.on(\'upgrade\', function(req, socket, head) {
  //
  // Proxy websocket requests too
  //
  proxy.proxyWebSocketRequest(req, socket, head, {
    host: \'localhost\',
    port: 8000
  });
});
它的生产使用情况应该没问题,因为它用于nodejitsu.com。要将代理应用程序作为守护程序运行,请考虑永久使用。
较新版本的nginx实际上将支持http / 1.1的反向代理。您可能需要1.1.7或更高版本。 在您的配置中尝试以下操作:
location / {
    chunked_transfer_encoding off;
    proxy_http_version 1.1;
    proxy_pass        http://localhost:9001;
    proxy_buffering   off;
    proxy_set_header  X-Real-IP  $remote_addr;
    proxy_set_header  Host $host:9001;  #probaby need to change this
    proxy_set_header  Connection \"Upgrade\"; 
    proxy_set_header  Upgrade websocket;
}
这样做的好处是,您可以在nginx处终止SSL。

要回复问题请先登录注册