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.
Gracias David, parece fácil de implementar, solo hay que añadir http2 en cada subdominio, lo probare.
¿Como se verifica luego que esta implementado el protocolo?
Hola,
Sí, no es complicado. Lo único que hay que tener en cuenta, es que tanto la versión del sistema operativo como de NGINX sea compatible con HTTP/2.
Para verificar, puedes utilizar la siguiente herramienta on-line:
https://tools.keycdn.com/http2-test
Saludos
Vaya, pues no lo debe soportar, porque añadí el http2 despues del ssl y pobre la configuración de nginx y me dio error:
nginx: [emerg] invalid parameter «http2» in /etc/nginx/sites-enabled/www.conf:15
Voy a ver como implementar http2 con nginx
Gracias
Tengo que actualizar nginx:
«Support of the HTTP/2 protocol was introduced in Nginx 1.9.5»
Yo tengo la 1.4.6
Si quieres, también te puedes aventurar a compilarlo. El colega Emiliano tiene un artículo al respecto en su web:
https://www.linuxito.com/gnu-linux/nivel-alto/834-como-habilitar-soporte-para-http-2-en-nginx
Bueno después de un poco de guerra conseguido, gracias David por el enlace