Tenho a seguinte infraestrutura:
80 -> Varnish -> Backend (NGINX, port 8080)
443 -> NGINX (SSL-Termination with HTTP/2 enabled) -> Varnish -> Backend (NGINX, port 8080)
Eu sei que é possível habilitar HTTP/2
protocolo para conexões frontend usando o -p feature=+http2
parâmetro para Varnish (porta 80), mas e as conexões backend? varnishlog -b
me mostra que toda a comunicação de back-end é realizada usando HTTP/1.0
e HTTP/1.1
.
Eu ficaria muito satisfeito se alguém pudesse me dizer qual é a prática comum em relação ao Varnish e ao NGINX:
- É possível habilitar
HTTP/2
para as conexões de back-end? - Faz algum sentido fazê-lo em relação ao desempenho?
- Faz sentido em relação ao desempenho manter o
-p feature=+http2
parâmetro habilitado para a443 -> NGINX (SSL-Termination with HTTP/2 enabled) -> Varnish
comunicação em termos de desempenho?
Em relação à comunicação de back-end (que não é criptografada): eu sei que HTTP/2
está vinculada à criptografia TLS, mas talvez haja algum ajuste que eu não tenha ouvido falar, então é por isso que acho melhor perguntar para ter 100% de certeza. Obrigado pela sua compreensão.
A resposta de @Michael Hampton está faltando alguns pontos, então aqui vai:
Varnish é o único software que faz HTTP/2 no combo Hitch+Varnish, mas a maioria dos navegadores requer conexão TLS para que o HTTP/2 funcione. Ou seja, a conexão TLS é necessária para HTTP/2, seu requisito básico hoje em dia.
O Varnish Plus suporta TLS, enquanto o código aberto do Varnish não.
Quanto às respostas:
-p feature=+http2
parâmetro habilitado para o 443 -> NGINX (SSL-Termination with HTTP/2 enabled). Como o NGINX simplesmente não fala HTTP/2 com seu backend (Varnish), semelhante a como o Varnish não fala HTTP/2 com seu backend (NGINX+PHP-FPM por exemplo), porque não faz sentido (consulte ponto anterior).Dito isto:
-p feature=+http2
um combo Hitch + Varnish.-p feature=+http2
o combo NGINX (stream) + Varnish SE o módulo de stream do NGINX tivesse suporte para negociação de protocolo ALPN. Mas não. Portanto, não pode encerrar o TLS "corretamente para que o HTTP/2 funcione.O verniz não suporta https. Nunca foi e nunca será.
O chamado suporte de frontend http2 que o Varnish oferece no 5.0 na verdade não está no Varnish. Em vez disso, ele usa outro software chamado engate, que é um servidor proxy que na verdade encerra o TLS usando HTTP/2 e passa conexões HTTP simples para seu back-end, que é o front-end do Varnish.
Todos os back-ends do Varnish são apenas HTTP.
Então, ao usar HTTP/2, na verdade fica assim:
Engate - Verniz - Nginx
Embora neste caso o verniz consiga engate.
Resumindo, não, você não pode fazer isso.