listen 443 ssl
: fa in modo che nginx ascolti su tutto l'indirizzo ipv4 sul server, sulla porta 443 ( 0.0.0.0:443
)
mentre
listen [::]:443 ssl
: fa in modo che nginx ascolti su tutto l'indirizzo ipv6 sul server, sulla porta 443 ( :::443
)
[::]:443
Nginx non risponderà su ipv4 per impostazione predefinita, a meno che non si specifichi il parametro ipv6only=off
:
listen [::]:443 ipv6only=off;
Come da documento: http://nginx.org/en/docs/http/ngx_http_core_module.html#listen
ssl:
Il parametro ssl (0.7.14) consente di specificare che tutte le connessioni accettate su questa porta dovrebbero funzionare in modalità SSL.
http2:
Il parametro http2 (1.9.5) configura la porta per accettare connessioni HTTP / 2 .
Ciò non significa che accetta solo connessioni HTTP / 2.
Secondo RFC7540
Un client che effettua una richiesta per un URI "http" senza una conoscenza preliminare del supporto per HTTP / 2 sull'hop successivo utilizza il meccanismo di aggiornamento HTTP. Il client esegue una richiesta HTTP / 1.1 che include un campo di intestazione Aggiornamento con il token "h2c".
Un server che non supporta HTTP / 2 può rispondere alla richiesta come se il campo dell'intestazione Aggiornamento fosse assente.
HTTP/1.1 200 OK
Content-Length: 243
Content-Type: text/html
Un server che supporta HTTP / 2 accetta l'aggiornamento con una risposta 101 (Switching Protocols). Dopo la riga vuota che termina la risposta 101, il server può iniziare a inviare frame HTTP / 2.
Riassumere :
Un client che non supporta HTTP / 2 non chiederà mai al server un aggiornamento della comunicazione HTTP / 2: la comunicazione tra loro sarà completamente HTTP1 / 1.
Un client che supporta HTTP / 2 chiederà al server (utilizzando HTTP1 / 1) un aggiornamento HTTP / 2:
- Se il server è pronto per HTTP / 2, il server noterà il client in quanto tale: la comunicazione tra loro verrà commutata su HTTP / 2.
- Se il server non è pronto per HTTP / 2, il server ignorerà la richiesta di aggiornamento rispondendo con HTTP1 / 1: la comunicazione tra loro dovrebbe rimanere abbondantemente HTTP1 / 1.
Forse più riassunti qui: http://qnimate.com/http2-compatibility-with-old-browsers-and-servers/
Tuttavia, il documento nginx afferma quanto segue su HTTP / 2 su TLS:
Si noti che l'accettazione delle connessioni HTTP / 2 su TLS richiede il supporto dell'estensione TLS "Application-Layer Protocol Negotiation" (ALPN), disponibile solo dalla versione 1.0.2 di OpenSSL.
Assicurarsi che i vecchi client siano conformi a questo requisito.