Ative o HTTP/2 para conexões de backend no Global Accelerator e melhore o desempenho de HTTPS, reduza a latência e diminua a sobrecarga de rede.
O que é HTTP/2
Negociação HTTP/2
Em conexões HTTPS, o cliente e o servidor precisam estabelecer uma conexão Transport Layer Security (TLS) antes de enviar dados de aplicação. Para dar suporte ao HTTP/2, o handshake usa Application-Layer Protocol Negotiation (ALPN) para determinar qual versão do protocolo será utilizada.
Ao ative o HTTP/2 no Global Accelerator, ele especifique h2 no campo ALPN da mensagem ClientHello durante o handshake TLS. O Global Accelerator ignora a versão do protocolo retornada pelo servidor na mensagem ServerHello, forçando uma conexão HTTP/2 com o service de backend.
Caso de uso
Este tópico utiliza o seguinte cenário. Uma empresa com sede em US (Silicon Valley) hospeda seu site HTTPS em instâncias ECS da Alibaba Cloud. A maior parte dos seus clientes está localizada em China (Hong Kong). A empresa usa o Global Accelerator para mitigar problemas de rede como latência, jitter e perda de pacotes causados pela instabilidade de redes públicas internacionais.
Para melhorar ainda mais o desempenho do site e a experiência dos usuários, a empresa pretende adotar o protocolo HTTP/2.
Por padrão, quando o Global Accelerator é configure com HTTPS como protocolo de service de backend, ele se conecta aos serviços de backend usando HTTP/1,1. A empresa precisa modifique a configuração da sua instância do Global Accelerator para especifique HTTP/2 nas conexões de backend e aproveitar ao máximo as melhorias de desempenho do protocolo.
Limitações
As seguintes limitações se aplicam às conexões de backend HTTP/2 no Global Accelerator:
Se a opção IP Version não estiver disponível para sua instância do Global Accelerator, ela pode não ser compatível com este recurso. Para ative-lo, entre em contato com seu gerente de conta para atualizar sua instância.
O protocolo WebSocket não é compatível.
O recurso Server Push do HTTP/2 não é compatível.
Requisições gRPC baseadas em HTTP/2 não podem ser aceleradas.
Pré-requisitos
Adquira ou faça upload de um certificado de servidor no console do Certificate Management Service. Para mais informações, consulte Purchase an official certificate e Upload, sync, and share SSL certificates.
Faça upload dos arquivos de certificado para seu servidor de backend. Para mais informações, consulte Use Cloud Assistant to upload a file to an ECS instance.
-
Seu servidor de backend deve ter um service HTTPS implantado na porta 443 com a versão do protocolo HTTP/2 ativada.
Verifique se há uma regra que permita tráfego de entrada na porta TCP 443 no grupo de segurança do servidor de backend. Para mais informações, consulte Add a security group rule.
Crie uma instância do Global Accelerator, adicione o servidor de backend como endpoint e defina o protocolo de service de backend como HTTPS. Para mais informações, consulte Create and manage standard Global Accelerator instances.
Certifique-se de que seu domínio esteja mapeado para o endereço CNAME atribuído pela instância do Global Accelerator. Para mais informações, consulte Add a CNAME record.
Configure HTTP/2 para conexões de backend
Esta seção aborda apenas as configurações essenciais para este cenário. Para mais informações sobre as configurações do grupo de endpoints, consulte Add and manage endpoint groups for intelligent-routing listeners.
Acesse o Global Accelerator console.
Na página Instances, localize a instância do GA que deseja gerencie e clique em Configure Listener na coluna Actions.
Na aba Listeners, localize o listener de destino e clique em Modify Endpoint Group na coluna Actions.
Na etapa Configure Listener & Protocol do assistente, clique em Next.
-
Na etapa Configure Endpoint Group do assistente, defina IP Version como HTTP/2 e clique em Next.
Defina Backend Service Protocol como HTTPS e IP Version como HTTP/2.
Na etapa Configuration Review, confirme as configurações e clique em Submit.
Verificar os resultados
Para confirmar que o HTTP/2 está ativo, verifique os logs de acesso do backend antes e depois de alterar a versão do protocolo.
A partir de um cliente na região China (Hong Kong), abra um navegador e insira
https://<accelerated domain name>. O service de backend deve estar acessível normalmente.-
No servidor de backend na região US (Silicon Valley), abra uma janela de linha de comando e execute o seguinte comando para visualize o registro de acesso mais recente.
O registro de acesso exibe a versão do protocolo usada para encaminhar a requisição ao servidor de backend.
tail -n 1 /var/log/nginx/access.logAntes de configure a versão do protocolo, o log de acesso mostra que a requisição de back-to-origin usa o protocolo
HTTP/1.1.[root@iZxxx ~]# tail -n 1 /var/log/nginx/access.log 172.20.xxx - - [30/Jul/2024:14:40:40 +0800] "GET / HTTP/1.1" 200 27 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0 Safari/537.36 Edg/126.0.0.0" "47.76.xxx"Após configure a versão do protocolo para HTTP/2, o log de acesso mostra que a requisição de back-to-origin passa a usar HTTP/2,0.
[root@iZrj95wxxx xxx ~]# tail -n 1 /var/log/nginx/access.log 172.20.xxx.xxx - - [30/Jul/2024:14:42:55 +0800] "GET / HTTP/2.0" 200 27 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0 Safari/537.36 Edg/126.0.0" "47.76.xxx.xxx"
Documentos relacionados
Tutorials
Para mais informações sobre as configurações do grupo de endpoints, consulte Add and manage endpoint groups for intelligent-routing listeners.
Para atualizar as conexões voltadas ao cliente para HTTP/3, defina a versão máxima de HTTP para acesso do cliente ao Global Accelerator como HTTP/3. Para mais informações, consulte Use HTTP/3 to improve the access experience of your applications.
API reference
CreateEndpointGroup: cria um grupo de endpoints. Use o parâmetro
EndpointProtocolVersionpara especifique a versão do protocolo de conexão com os serviços de backend.UpdateEndpointGroup: modifique a configuração de negócios de um grupo de endpoints. Use o parâmetro
EndpointProtocolVersionpara especifique a versão do protocolo de conexão com os serviços de backend.DeleteEndpointGroup: exclui um grupo de endpoints.