Cómo activar HTTP/2 en Nginx
El Protocolo de Transferencia de Hipertexto Versión 2 (HTTP/2) es la última versión del protocolo HTTP, publicada como norma del IETF en el RFC 7540 en 2015 . El protocolo se centra en el rendimiento; concretamente, en la latencia percibida por el usuario final y en el uso de recursos de la red y del servidor. Un objetivo importante es permitir el uso de una única conexión desde los navegadores a un sitio Web. El protocolo es compatible con versiones anteriores, por lo que los métodos HTTP, los códigos de estado y la semántica son los mismos que para las versiones anteriores del protocolo. Nginx es compatible con HTTP/2 desde la versión 1.9.5. En este tutorial, voy asuponer que ya tienes una configuración TLS que funciona, y que tienes instalada la versión necesaria de Nginx en la distribución Linux que elijas, y que sabes cómo utilizar Let’s Encrypt, o sabes cómo emitir un certificado autofirmado.
Requisitos
Para habilitar HTTP/2 en Nginx necesitarás cumplir los siguientes requisitos:
- Nginx versión 1.9.5 o superior. Puedes comprobar tu versión de Nginx ejecutando el comando (
nginx -v
). - OpenSSL versión 1.0.2 o superior. Puedes comprobar tu versión de OpenSSL ejecutando el comando (versión de OpenSSL) o instalando la última versión de OpenSSL.
- Certificado SSL/TLS de Let’s Encrypt o un certificado autofirmado.
- Protocolo TLS 1.2 o superior activado. De lo contrario, no podrás utilizar HTTP/2. Las implementaciones de HTTP/2 deben utilizar TLS versión 1.2 o superior para HTTP/2 sobre TLS.
Habilitar HTTP/2 en Nginx
Para habilitar HTTP/2 en Nginx, tenemos queañadir el parámetro http2
a la directivalisten
en nuestro host virtual:
listen 443 ssl http2;
Y recargar la configuración de Nginx:
sudo systemctl reload nginx.service
Esta es la configuración mínima del servidor virtual que se puede utilizar para habilitar HTTP/2 en algún host virtual:
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name example.com;
root /path/to/public;
ssl_certificate /path/to/certificate.crt;
ssl_certificate_key /path/to/private.key;
ssl_protocols TLSv1.2;
}
Para comprobar si tu servidor admite HTTP/2, puedes utilizar las herramientas de desarrollo de tu navegador o los archivos de registro de Nginx. La siguiente es una captura de pantalla del navegador Google Chrome que muestra HTTP/2 en acción en el dominio https://example.com.
También puedes utilizar la variable incrustada $http2 de Nginx para ver el protocolo negociado. Esta variable registrará :»h2
» para HTTP/2 sobre TLS, «h2c
» para HTTP/2 sobre TCP en texto claro, o una cadena vacía en caso contrario en el registro de acceso de Nginx si está configurado para ello.
Y eso es todo lo que hay que hacer para activar HTTP/2 en tu servidor Nginx.