【问题标题】:Node.js - Good WebServer with WebSocket-proxying & SSL support?Node.js - 具有 WebSocket 代理和 SSL 支持的良好 WebServer?
【发布时间】:2011-04-19 13:14:37
【问题描述】:

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

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

我尝试实现一个具有我自己的功能的网络服务器,但是在标头传递等方面确实很复杂。另一件事是 SSL 支持。支持它并不容易。

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

感谢您的帮助!

【问题讨论】:

    标签: proxy node.js webserver websocket


    【解决方案1】:

    我使用 nodejitsu 的node-http-proxy 取得了不错的成绩。正如他们的自述文件中所述,他们似乎支持 WebSockets。

    WebSocket 示例(取自他们的 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。要将代理应用程序作为守护程序运行,请考虑使用forever

    【讨论】:

      【解决方案2】:

      较新版本的 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。

      【讨论】:

        猜你喜欢
        • 2010-10-14
        • 1970-01-01
        • 2011-06-05
        • 2019-12-29
        • 1970-01-01
        • 2011-09-12
        • 1970-01-01
        • 2011-10-05
        • 1970-01-01
        相关资源
        最近更新 更多