Implementando um proxy reverso compatível com HTTP/2 no Nginx
Olá, sou um incompetente.
Embora os artigos recentes pareçam estar lutando para suportar HTTP/2...
$ curl https://soulminingrig.com/
curl: (92) Invalid HTTP header field was received: frame type: 1, stream: 1, name: [upgrade], value: [h2,h2c]
E então...
O upgrade só pode ser usado com HTTP.
E, como a conexão entre Nginx e Apache é feita via HTTP1.1, essa informação de cabeçalho é incluída, e ao usar curl com a comunicação HTTP/2, que é o padrão HTTPS, ele reclama.
Então, pensei, e se eu remover isso? Tentei e funcionou.
Em termos gerais, estávamos entregando com informações de cabeçalho de comunicação HTTP incluídas, então se ajustarmos para HTTP2, deve funcionar, certo? É algo assim.
Em informações em japonês, o artigo da NIC é provavelmente o mais fácil de entender.
Configuração do Nginx
Parece que basta configurar isso na diretiva location e remover o cabeçalho Upgrade.
Pode não ser necessário, mas como é uma comunicação HTTP, eu o especifiquei explicitamente.
proxy_hide_header Upgrade;
proxy_http_version 1.1;
Vamos de curl!
Com isso, ao fazer curl -I...
$ curl -I https://soulminingrig.com/
HTTP/2 200
server: nginx/1.27.0
date: Thu, 21 Nov 2024 22:44:47 GMT
content-type: text/html
content-length: 15375
vary: Accept-Encoding
last-modified: Thu, 21 Nov 2024 03:45:14 GMT
etag: "3c0f-627641819d3e9"
accept-ranges: bytes
vary: Accept-Encoding
content-security-policy: upgrade-insecure-requests
alt-svc: h3=":443"; ma=86400
x-content-type-options: nosniff
Funcionou!!!
Hoje tenho minha festa de despedida, então poderei beber álcool sem preocupações!
Até a próxima. Conto com vocês.