listen 443 ssl
: fait écouter nginx sur toutes les adresses ipv4 du serveur, sur le port 443 ( 0.0.0.0:443
)
tandis que
listen [::]:443 ssl
: fait écouter nginx sur toutes les adresses ipv6 du serveur, sur le port 443 ( :::443
)
[::]:443
ne fera pas répondre nginx sur ipv4 par défaut, sauf si vous spécifiez un paramètre ipv6only=off
:
listen [::]:443 ipv6only=off;
Selon le doc: http://nginx.org/en/docs/http/ngx_http_core_module.html#listen
ssl:
Le paramètre ssl (0.7.14) permet de spécifier que toutes les connexions acceptées sur ce port doivent fonctionner en mode SSL.
http2:
Le paramètre http2 (1.9.5) configure le port pour accepter les connexions HTTP / 2 .
Cela ne signifie pas qu'il accepte uniquement les connexions HTTP / 2.
Selon RFC7540
Un client qui demande un URI "http" sans connaissance préalable de la prise en charge de HTTP / 2 sur le tronçon suivant utilise le mécanisme de mise à niveau HTTP. Le client le fait en faisant une requête HTTP / 1.1 qui inclut un champ d'en-tête Upgrade avec le jeton "h2c".
Un serveur qui ne prend pas en charge HTTP / 2 peut répondre à la demande comme si le champ d'en-tête de mise à niveau était absent.
HTTP/1.1 200 OK
Content-Length: 243
Content-Type: text/html
Un serveur qui prend en charge HTTP / 2 accepte la mise à niveau avec une réponse 101 (Switching Protocols). Après la ligne vide qui termine la réponse 101, le serveur peut commencer à envoyer des trames HTTP / 2.
Résumer :
Un client qui ne prend pas en charge HTTP / 2 ne demandera jamais au serveur une mise à niveau de la communication HTTP / 2: la communication entre eux sera entièrement HTTP1 / 1.
Un client qui prend en charge HTTP / 2 demandera au serveur (en utilisant HTTP1 / 1) une mise à niveau HTTP / 2:
- Si le serveur est prêt pour HTTP / 2, alors le serveur remarquera le client en tant que tel: la communication entre eux sera commutée sur HTTP / 2.
- Si le serveur n'est pas prêt pour HTTP / 2, alors le serveur ignorera la demande de mise à niveau répondant avec HTTP1 / 1: la communication entre eux devrait rester largement HTTP1 / 1.
Peut-être plus résumé ici: http://qnimate.com/http2-compatibility-with-old-browsers-and-servers/
Cependant, le document nginx indique ce qui suit à propos de HTTP / 2 sur TLS:
Notez que l'acceptation des connexions HTTP / 2 sur TLS nécessite la prise en charge de l'extension TLS «Application-Layer Protocol Negotiation» (ALPN), qui n'est disponible que depuis OpenSSL version 1.0.2.
Assurez-vous que les anciens clients sont conformes à cette exigence.