Um ingress gateway com HTTPS habilitado usa a Negociação de Protocolo de Camada de Aplicação (ALPN) para negociar HTTP/2 e HTTP/1.1, com preferência padrão para HTTP/2. Se o cliente apresentar problemas de compatibilidade com HTTP/2 impossíveis de resolver no lado do cliente, desative o HTTP/2 no ingress gateway para negociar apenas HTTP/1.1.
Para desativar o HTTP/2, adicione a anotação httpsHttp2Disabled: true à configuração do pod do ingress gateway no console do Alibaba Cloud Service Mesh (ASM).
Funcionamento da negociação ALPN
Durante o handshake TLS, o ingress gateway anuncia h2 (HTTP/2) e http/1.1 como protocolos compatíveis via ALPN. Se o cliente também for compatível com HTTP/2, o gateway selecionará h2. Esse é o comportamento padrão para listeners HTTPS em gateways baseados em Istio.
A desativação do HTTP/2 remove h2 da lista de anúncios do ALPN. Assim, o gateway negocia apenas http/1.1 com os clientes downstream, independentemente dos recursos do cliente.
Cenários comuns que exigem a desativação do HTTP/2:
Clientes legados com implementações incompletas de HTTP/2
Aplicações com falhas de conexão ou comportamento inesperado via HTTP/2
Ambientes em que a multiplexação HTTP/2 causa problemas com serviços upstream
Pré-requisitos
Antes de começar, verifique se você tem:
Verificar as configurações atuais do ALPN
Antes de alterar as configurações, confirme se o ingress gateway negocia atualmente HTTP/2 e HTTP/1.1.
Execute o comando a seguir. Substitua <ingress-gateway-ip> pelo endereço IP do seu ingress gateway.
curl -k -H Host:b.aliyun.com --resolve b.aliyun.com:443:<ingress-gateway-ip> https://b.aliyun.com/status/418 -v
Na saída, localize a seção de negociação ALPN:
* ALPN, offering h2
* ALPN, offering http/1.1
...
* ALPN, server accepted to use h2
Essa saída confirma que o gateway anuncia h2 e http/1.1, e que o servidor seleciona h2 (HTTP/2).

Desativar HTTP/2 para conexões HTTPS
Esta configuração reinicia o ingress gateway. Planeje uma breve interrupção no tráfego desse gateway.
Faça login no console ASM. No painel de navegação à esquerda, escolha Service Mesh > Mesh Management.
Na página Mesh Management, clique em nome da sua instância ASM. No painel de navegação à esquerda, escolha ASM Gateways > Ingress Gateway.
Na página Ingress Gateway, localize o gateway desejado e clique em YAML na coluna Actions.
-
Na caixa de diálogo Edit, adicione o bloco
podAnnotationsa seguir sob o campospece clique em OK. Essa anotação define o campoProxyConfigdo Istio, especificamentehttpsHttp2Disabled, comotrue. Isso removeh2da lista de protocolos ALPN nos listeners HTTPS.podAnnotations: proxy.istio.io/config: | httpsHttp2Disabled: true
Verificar a desativação do HTTP/2
Após a reinicialização do gateway, execute o mesmo comando curl para confirmar a negociação exclusiva de HTTP/1.1:
curl -k -H Host:b.aliyun.com --resolve b.aliyun.com:443:<ingress-gateway-ip> https://b.aliyun.com/status/418 -v
Na saída, verifique se a seção ALPN exibe apenas http/1.1:
* ALPN, offering h2
* ALPN, offering http/1.1
...
* ALPN, server accepted to use http/1.1
O cliente ainda oferece ambos os protocolos, mas o servidor aceita apenas http/1.1. Isso confirma a desativação do HTTP/2 no ingress gateway.
