listen 443 ssl
: hace que nginx escuche en todas las direcciones ipv4 del servidor, en el puerto 443 ( 0.0.0.0:443
)
mientras
listen [::]:443 ssl
: hace que nginx escuche en todas las direcciones ipv6 del servidor, en el puerto 443 ( :::443
)
[::]:443
no hará que nginx responda en ipv4 de forma predeterminada, a menos que especifique el parámetro ipv6only=off
:
listen [::]:443 ipv6only=off;
Según el documento: http://nginx.org/en/docs/http/ngx_http_core_module.html#listen
ssl:
El parámetro ssl (0.7.14) permite especificar que todas las conexiones aceptadas en este puerto deberían funcionar en modo SSL.
http2:
El parámetro http2 (1.9.5) configura el puerto para aceptar conexiones HTTP / 2 .
Esto no significa que solo acepte conexiones HTTP / 2.
Según RFC7540
Un cliente que realiza una solicitud de un URI "http" sin conocimiento previo sobre la compatibilidad con HTTP / 2 en el siguiente salto utiliza el mecanismo de actualización HTTP. El cliente lo hace haciendo una solicitud HTTP / 1.1 que incluye un campo de encabezado de actualización con el token "h2c".
Un servidor que no es compatible con HTTP / 2 puede responder a la solicitud como si el campo de encabezado de actualización estuviera ausente.
HTTP/1.1 200 OK
Content-Length: 243
Content-Type: text/html
Un servidor que admite HTTP / 2 acepta la actualización con una respuesta 101 (Protocolos de conmutación). Después de la línea vacía que termina la respuesta 101, el servidor puede comenzar a enviar tramas HTTP / 2.
Para resumir :
Un cliente que no admite HTTP / 2 nunca le pedirá al servidor una actualización de comunicación HTTP / 2: la comunicación entre ellos será completamente HTTP1 / 1.
Un cliente que admita HTTP / 2 le pedirá al servidor (usando HTTP1 / 1) una actualización de HTTP / 2:
- Si el servidor está preparado para HTTP / 2, el servidor notará al cliente como tal: la comunicación entre ellos se cambiará a HTTP / 2.
- Si el servidor no está preparado para HTTP / 2, entonces el servidor ignorará la solicitud de actualización respondiendo con HTTP1 / 1: la comunicación entre ellos debería mantenerse bastante HTTP1 / 1.
Quizás más resumido aquí: http://qnimate.com/http2-compatibility-with-old-browsers-and-servers/
Sin embargo, el documento nginx establece lo siguiente sobre HTTP / 2 sobre TLS:
Tenga en cuenta que la aceptación de conexiones HTTP / 2 a través de TLS requiere el soporte de extensión TLS "Negociación de protocolo de capa de aplicación" (ALPN), que está disponible solo desde OpenSSL versión 1.0.2.
Asegúrese de que los clientes antiguos cumplan con este requisito.