SPDY与HAProxy和Nginx

时间:2016-07-10 17:47:55

标签: nginx haproxy http2 spdy multiplexing

我使用HAProxy作为负载均衡器并终止SSL。在我身后,我放了一个Nginx。我想使用spdy / 3.1。

它不适用于以下 haproxy.conf nginx.cfg 。 (文件是服务器,但根据Chrome SPDY/HTTP2 Indicator Plugin,这只是普通的HTTP / 1.1流量。)

我试图去除不必要的部分。

我做错了什么?你有调试技巧吗?

(HAProxy 1.6 current和NginX 1.10 stable line)

haproxy.cfg:

global
  daemon
  tune.ssl.default-dh-param 2048

defaults
  mode tcp

frontend myfrontend
  bind *:80
  bind *:443 ssl crt /etc/ssl/certificate.pem npn spdy/3.1,http/1.1 ciphers ECDH+AESGCM:HIGH:!aNULL:!MD5:!DSS:!RC4; no-sslv3
  acl istoplevel path /
  redirect scheme https if istoplevel !{ ssl_fc }
  redirect location / if !istoplevel !{ ssl_fc }
  rspadd Strict-Transport-Security:\ max-age=31536000;
  default_backend mybackend

backend mybackend
  server s1 localhost:81
  option forwardfor
  http-request set-header X-Forwarded-Port %[dst_port]
  http-request add-header X-Forwarded-Proto https if { ssl_fc }

nginx.conf:

user  nginx;

http {
  include       /etc/nginx/mime.types;
  default_type  application/octet-stream;

  sendfile        on;
  #tcp_nopush     on;

  server {
    listen 81 spdy;
    root /usr/share/nginx/html;
    index index.html;

    location / {
      try_files $uri $uri/ /index.html;
    }
  }
}

2 个答案:

答案 0 :(得分:1)

Chrome不再支持SPDY: http://blog.chromium.org/2016/02/transitioning-from-spdy-to-http2.html?m=1

它在很多实例中都不支持HTTP / 2:https://ma.ttias.be/day-google-chrome-disables-http2-nearly-everyone-may-31st-2016/

如果你在HAproxy终止,那么Nginx正在做什么并不重要。我不确定HAproxy是否支持SPDY?有些帖子建议does with special config,其他帖子则表示正在等待HTTP / 2。

最终SPDY即将退出。即使它的发明者不支持它,你也知道你正在进行一场失败的战斗。你可以更好地转向HTTP / 2.

答案 1 :(得分:0)

您需要在Chrome上使用ALPN。对于HAProxy,您需要1.8才能支持使用HTTP2进行终结。

以下是CertSimple的load balancer with HTTP/2 and dynamic reconfig指南中HTTP2和ALPN的相关配置:

frontend public
    # HTTP/2 - see https://www.haproxy.com/blog/whats-new-haproxy-1-8/
    bind :443 ssl crt /etc/https/cert-and-private-key-and-intermediate-and-dhparam.pem alpn h2,http/1.1