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.

Infografía http/2

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:

  1. 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:

  1. sudo nano /etc/nginx/sites-available/default

Debería quedar una cosa similar a la siguiente:

  1. server {  
    
  2.         server_name domain.com www.domain.com;
    
  3.         listen 443 ssl http2 default_server;
    
  4.         root /var/www/html;
    
  5.         index index.html;
    
  6.  
  7.         location / {
    
  8.                 try_files $uri $uri/ =404;
    
  9.         }
    
  10.  
  11.         ssl_certificate /etc/nginx/ssl/domain.com.crt;
    
  12.         ssl_certificate_key /etc/nginx/ssl/domain.com.key;
    
  13. }
    
  14.  
  15. server {
    
  16.        listen         80;
    
  17.        server_name    domain.com www.domain.com;
    
  18.        return         301 https://$server_name$request_uri;
    
  19. }

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:

  1. sudo systemctl restart nginx.service

Con esto ya lo tendremos listo.

6 Respuestas

  1. 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?

  2. Bueno después de un poco de guerra conseguido, gracias David por el enlace

Deja un comentario

This site uses Akismet to reduce spam. Learn how your comment data is processed.