2016-06-15 27 views
5

Abbiamo un web server Java, che è in grado di servire contenuti su H2C (HTTP/2 chiaro testo)Reverse il proxy HTTP/2 da H2 a H2C

Vorremmo invertire le connessioni proxy stabiliti secondo h2 (vale a dire di serie HTTP/2 su SSL) al server java in h2c.

Abilitare HTTP/2 su nginx è abbastanza semplice e gestire le connessioni h2 in arrivo funziona correttamente.

Come si comunica a nginx il proxy della connessione utilizzando h2c anziché http/1.1?

Nota: una soluzione non nginx può essere accettabile

server { 
    listen  443 ssl http2 default_server; 
    server_name localhost; 

    ssl_certificate  /opt/nginx/certificates/???.pem; 
    ssl_certificate_key /opt/nginx/certificates/???.pk8.key.pem; 

    ssl_session_cache shared:SSL:1m; 
    ssl_session_timeout 5m; 

    ssl_ciphers HIGH:!aNULL:!MD5; 
    ssl_prefer_server_ciphers on; 

    location/{ 
     proxy_pass http://localhost:8080/; ## <---- h2c here rather than http/1.1 
    } 
} 

CONCLUSIONI (giugno 2016)

Questo può essere fatto con haproxy utilizzando un file di configurazione semplice come quello sottostante.

Interrogazione (HttpServletRequest)req.getProtocol() restituisce chiaramente HTTP/2.0

global 
tune.ssl.default-dh-param 1024 

defaults 
timeout connect 10000ms 
timeout client 60000ms 
timeout server 60000ms 

frontend fe_http 
mode http 
bind *:80 
# Redirect to https 
redirect scheme https code 301 

frontend fe_https 
mode tcp 
bind *:443 ssl no-sslv3 crt mydomain.pem ciphers TLSv1.2 alpn h2,http/1.1 
default_backend be_http 

backend be_http 
mode tcp 
server domain 127.0.0.1:8080 
+2

Immagino che nginx non lo sostenga. http://nginx.org/r/proxy_http_version –

+0

@AlexeyTen spero che succeda presto .. Sono andato con haproxy nel frattempo –

+0

vorrei interrogare il valore in questo. Il vantaggio principale di HTTP/2 è per le connessioni client-server ad alta latenza e meno per, presumibilmente, connessioni server-server a bassa latenza. HTTP/2 sarà il futuro per la maggior parte delle connessioni (comprese eventualmente quelle server-server), ma la mancanza di supporto al momento ci dice quanto sia nuovo questo e quindi se sia saggio passare a quello appena basato su limitati lati negativi . Solo la mia opinione - e io sono un grande fan di HTTP/2 per i clienti, quindi non sto cercando di sottovalutare i benefici lì. –

risposta

2

HAProxy supporta questo.

HAProxy può scaricare TLS e inoltrare a un backend che parla h2c.

Dettagli su come configurare questa configurazione sono disponibili in this blog post.

+0

Grazie. Sto provando adesso Riporterò i risultati –

+0

@BrunoGrieder, per curiosità, qual è il server di backend che parla 'h2c'? – sbordet

+0

Usiamo Jetty embedded 9.3.9 –

Problemi correlati