listen 443 ssl
: faz o nginx escutar em todos os endereços ipv4 do servidor, na porta 443 ( 0.0.0.0:443
)
enquanto
listen [::]:443 ssl
: faz o nginx escutar em todos os endereços ipv6 do servidor, na porta 443 ( :::443
)
[::]:443
não fará o nginx responder no ipv4 por padrão, a menos que você especifique o parâmetro ipv6only=off
:
listen [::]:443 ipv6only=off;
Conforme o documento: http://nginx.org/en/docs/http/ngx_http_core_module.html#listen
ssl:
O parâmetro ssl (0.7.14) permite especificar que todas as conexões aceitas nesta porta devem funcionar no modo SSL.
http2:
O parâmetro http2 (1.9.5) configura a porta para aceitar conexões HTTP / 2 .
Isso não significa que ele aceita apenas conexões HTTP / 2.
Conforme RFC7540
Um cliente que solicita um URI "http" sem conhecimento prévio sobre o suporte ao HTTP / 2 no próximo salto usa o mecanismo de Atualização HTTP. O cliente faz isso fazendo uma solicitação HTTP / 1.1 que inclui um campo de cabeçalho Upgrade com o token "h2c".
Um servidor que não suporta HTTP / 2 pode responder à solicitação como se o campo Cabeçalho de atualização estivesse ausente.
HTTP/1.1 200 OK
Content-Length: 243
Content-Type: text/html
Um servidor que suporte HTTP / 2 aceita a atualização com uma resposta 101 (Protocolos de comutação). Após a linha vazia que finaliza a resposta 101, o servidor pode começar a enviar quadros HTTP / 2.
Para resumir:
Um cliente que não suporta HTTP / 2 nunca solicitará ao servidor uma atualização de comunicação HTTP / 2: a comunicação entre eles será totalmente HTTP1 / 1.
Um cliente que suporte HTTP / 2 solicitará ao servidor (usando HTTP1 / 1) uma atualização HTTP / 2:
- Se o servidor estiver pronto para HTTP / 2, o servidor notará o cliente como tal: a comunicação entre eles será alternada para HTTP / 2.
- Se o servidor não estiver pronto para HTTP / 2, o servidor ignorará a solicitação de atualização que responde com HTTP1 / 1: a comunicação entre eles deve permanecer bastante HTTP1 / 1.
Talvez seja mais resumido aqui: http://qnimate.com/http2-compatibility-with-old-browsers-and-servers/
No entanto, o documento nginx declara o seguinte sobre HTTP / 2 sobre TLS:
Observe que aceitar conexões HTTP / 2 por TLS requer o suporte à extensão TLS "Application-Layer Protocol Negotiation" (ALPN), disponível apenas desde o OpenSSL versão 1.0.2.
Verifique se os clientes antigos estão em conformidade com esse requisito.