Habilitar HTTP/2 en GNU Linux con NGINX
HTTP/2 es la mayor revisión del protocolo de red HTTP y está enfocado a mejoras en el rendimiento. El objetivo es reducir la latencia y hacer que las aplicaciones web sean más rápidas, permitiendo así múltiples peticiones simultáneas, entre el navegador web y el servidor, a través de una sola conexión TCP.
En el artículo de hoy veremos cómo habilitar HTTP/2 en nuestro servidor con NGINX, utilizando una distribución GNU Linux, concretamente Debian Jessie.
Importante remarcar que HTTP/2 es compatible con las últimas versiones de las distribuciones, en Debian, por ejemplo, está disponible a partir de la versión 7 y 8, utilizando la versión de NGINX 1.9.5 hacia delante.
Requisitos
El más importante es que tengamos ya NGINX instalado y asegurarnos que sea funcional. Para ello sólo debemos escribimos el siguiente comando:
sudo nginx -t
Adicionalmente, debemos tener permisos de superusuario con root o por lo menos que tenga privilegios, para así poder realizar cambios. Contamos que se utiliza un nombre de dominio FQDN y un certificado SSL, véase por ejemplo Let’s Encrypt.
Manos a la faena
Realmente no nos llevará muchos quebraderos de cabeza el cambio, simplemente debemos modificar el fichero de configuración de nuestro Virtual Host. Concreatamente:
sudo nano /etc/nginx/sites-available/default
Debería quedar una cosa similar a la siguiente:
server {
server_name domain.com www.domain.com;
listen 443 ssl http2 default_server;
root /var/www/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
ssl_certificate /etc/nginx/ssl/domain.com.crt;
ssl_certificate_key /etc/nginx/ssl/domain.com.key;
}
server {
listen 80;
server_name domain.com www.domain.com;
return 301 https://$server_name$request_uri;
}
Evidentemente los datos se tendrían que cambiar, por ejemplo, el nombre de dominio por el que utilicemos. La ubicación de los certificados, deberán apuntar a donde los tengamos.
Para finalizar guardamos y reiniciamos el servicio:
sudo systemctl restart nginx.service
Con esto ya lo tendremos listo.