HAproxy 和 Node.js+Spdy

Posted

技术标签:

【中文标题】HAproxy 和 Node.js+Spdy【英文标题】:HAproxy and Node.js+Spdy 【发布时间】:2012-12-18 10:57:00 【问题描述】:

我目前正在使用node spdy 来提供文件。这很好用。

但是,我想使用 HAproxy 在这些节点服务器之间进行负载平衡。但是当我的 node/spdy 服务器在 HAproxy 后面时,request.isSpdyfalse...所以突然不支持 spdy?

这是我的 HAproxy 配置: 全球的 maxconn 4096

defaults
    timeout connect 5000ms
    timeout client 50000ms
    timeout server 50000ms

frontend http_proxy
    mode http
    bind *:80
    redirect prefix https://awesome.com code 301

frontend https_proxy
    mode tcp
    bind *:443
    default_backend webservers

backend webservers
    balance source
    server server1 127.0.0.1:10443 maxconn 4096
    # server server2 127.0.0.1:10444 maxconn 4096

谢谢!

【问题讨论】:

【参考方案1】:

您不能将 HAProxy 的 HTTP 负载平衡机制与 SPDY 一起使用。首先,您需要使用最新的开发分支来启用对 NPN(以及 SPDY)的支持,然后,您必须将其配置为更接近于简单的 TCP 负载平衡模式——HAProxy 不支持 SPDY。

有关 HAProxy + SPDY 配置脚本的示例,请参见此处: http://www.igvita.com/2012/10/31/simple-spdy-and-npn-negotiation-with-haproxy/

【讨论】:

【参考方案2】:

我遇到了同样的问题。我没有使用 spdy,而是使用 express 并让 haproxy 使用 http/2 协议。

 frontend http-in
   bind *:80
   mode http
   redirect scheme https code 301

frontend https-in
    mode http
    bind *:443 ssl crt /path/to/cert.pem alpn h2,http/1.1

这里的关键是这部分alpn h2,http/1.1

【讨论】:

以上是关于HAproxy 和 Node.js+Spdy的主要内容,如果未能解决你的问题,请参考以下文章

HAProxy + WebSocket 断开连接

如何使带有房间的 node.js 服务器可扩展

如何在 Node.js 中调试错误 ECONNRESET?

你能从 Stud > HAProxy > nginx 获得 X-forwarded-for 吗?

node.js 和 node 有啥区别?

Node.js和node.js相关的常识