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

我真的很喜欢node.js,但是当你想要运行多个websocket服务器并且通过端口80访问它们时,这真的很复杂。

我目前正在运行nginx,但代理传入websocket连接到不同的websocket服务器取决于url是不可能的,因为nginx不支持http 1.1。

我试图实现一个具有我自己的function的networking服务器,但它涉及到头传递等是非常复杂的。另一件事是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或更高的版本。

在你的configuration中尝试这样的事情:

 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。