2016-07-10 7 views
0

Я использую HAProxy в качестве loadbalancer и прекращаю SSL. За этим я разместил Nginx. Я хотел бы использовать spdy/3.1.SPDY с HAProxy и Nginx

Он не работает со следующими haproxy.conf и nginx.cfg. (файлы являются serverd, но в соответствии с Chrome SPDY/HTTP2 Indicator Plugin это обычный трафик HTTP/1.1).

Я попытался снять ненужные части.

Что я делаю неправильно? У вас есть советы по отладке?

(HAProxy 1.6 тока и Nginx 1.10 стабильная линия)

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; 
    } 
    } 
} 
+0

Nginx построен с --with-http_v2-модулем. Это включает spdy? Документация не так подробно об этом – nxrd

ответ

1

хром не поддерживает 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/

Также не имеет значения, что делает Nginx, если вы завершаете HAproxy. Я не уверен, поддерживает ли HAproxy SPDY? Некоторые сообщения предлагают does with special config, другие, что он ждет HTTP/2.

В конечном счете SPDY находится на выходе. Когда даже его изобретатель не поддержит его, вы знаете, что вы проиграли битву. Вы бы гораздо лучше перешли к HTTP/2.

+0

Я знаю, но основной модуль для модуля http/2 для nodejs поддерживает его только с TLS, и поскольку я завершаю ssl в haproxy, я не могу его использовать – nxrd

+0

Откуда взялись nodejs!?! Не упоминается вообще в оригинальном вопросе. Это за Nginx? В конечном счете, связь между HAproxy и Nginx и всем остальным, что у вас там, не имеет значения. Вероятно, это будет настолько низкая латентность, что любое преимущество над HTTP/1.1 будет незначительным. Что вам нужно, так это соединение между браузером клиента и HAProxy - получите работу с SPDY или, желательно, HTTP/2, чтобы увидеть большинство преимуществ. Кстати, это не обязательно должно быть одним протоколом, поскольку, как только вы завершаете SSL, вы также прекратите соединение и начнете новый с этого момента. –

+0

Nodejs - это еще одна услуга, кроме nginx, которая сбалансирована по нагрузке с помощью haproxy. Это не было частью вопроса, но я принял это во внимание, когда решил пойти с SPDY, поэтому я упомянул об этом в комментарии. Так хорошо, тогда я постараюсь пойти с http/2. Я думал, что это имеет смысл, если у меня есть SPDY/http2 на всем пути вниз: D Спасибо до сих пор :) Я вернусь к вам, когда у меня возникнут проблемы – nxrd

0

Вам необходимо использовать ALPN для Chrome. Для HAProxy вам понадобится 1,8 для поддержки установления соединения с HTTP2.

Вот соответствующие конфигурации для http2 и ALPN от load balancer with HTTP/2 and dynamic reconfig руководства CertSimple по:

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