首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Node.js -具有WebSocket代理和WebServer支持的好WebServer?

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

Stack Overflow用户
提问于 2011-04-19 21:14:38
回答 2查看 2.7K关注 0票数 4

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

我目前运行的是nginx,但无法根据url将传入的websocket连接代理到不同的websocket服务器,因为nginx不支持http 1.1。

我已经尝试实现了一个when服务器,它具有我自己的功能,但当涉及到头传递等时,它真的很复杂。另一件事是SSL支持。要支持它并不容易。

那么,有没有人知道做我提到的事情的一个好的解决方案?

谢谢你的帮助!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-19 21:43:48

我使用nodejitsu的node-http-proxy得到了很好的结果。正如他们的自述文件中所述,他们似乎支持WebSockets。

WebSockets示例(取自他们的GitHub自述文件):

代码语言:javascript
运行
复制
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的。要将代理应用程序作为守护进程运行,请考虑使用forever

票数 8
EN

Stack Overflow用户

发布于 2011-12-31 08:22:05

较新版本的nginx实际上将支持http/1.1的反向代理。您可能需要1.1.7或更高版本。

在您的配置中尝试如下所示:

代码语言:javascript
运行
复制
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。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5716915

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档