Cómo instalar Nginx con soporte HTTP /2 en Ubuntu 18.04 LTS

27 feb 2021 3 min di lettura
Cómo instalar Nginx con soporte HTTP /2 en Ubuntu 18.04 LTS
Indice dei contenuti

Introducción

Nginx es un servidor web de código abierto rápido y confiable. Ha ganado popularidad debido a su bajo uso de memoria, alta escalabilidad, facilidad de configuración y soporte para la mayoría de los diferentes protocolos.

Uno de los protocolos admitidos es HTTP /2. La principal ventaja de HTTP /2 es su alta velocidad de transferencia para sitios web ricos en contenido.

HTTP /2 es una nueva versión del Protocolo de transporte de hipertexto, que se utiliza en la web para enviar páginas desde el servidor al navegador. El protocolo HTTP 1.1 limita las velocidades de transferencia potenciales para la mayoría de los sitios web modernos porque descarga partes de una página en una cola y una página web moderna promedio requiere alrededor de 100 solicitudes para descargar

HTTP /2 resuelve este problema.

  • Todas las solicitudes se descargan en paralelo, no en cola.
  • Los encabezados HTTP están comprimidos.
  • Las páginas se transfieren como un archivo binario, no como un archivo de texto.
  • Los servidores pueden "enviar" datos incluso sin la solicitud del usuario, lo que mejora la velocidad para los usuarios con alta latencia.

Este tutorial lo ayudará a configurar un servidor Nginx rápido y seguro con soporte HTTP /2.

Instalar Nginx

El soporte para el protocolo HTTP /2 se introdujo en Nginx 1.9.5. Afortunadamente, el repositorio predeterminado en Ubuntu 18.04 LTS contiene una versión superior a esta, por lo que no es necesario agregar un repositorio de terceros.

Primero, actualice la lista de paquetes disponibles en el sistema de empaquetado de apt:

sudo apt update

Luego instalamos Nginx:

sudo apt install nginx

Podemos comprobar la versión de Nginx instalada:

sudo nginx -v

Configurar Nginx

Abramos el archivo de configuración principal de Nginx y cambiemos el puerto HTTP 80 a 443 HTTPS:

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

Por defecto, debería tener esta configuración:


listen 80 default_server;
 listen [::]:80 default_server;

Vamos a cambiarlo así:


listen 443 ssl http2 default_server;
 listen [::]:443 ssl http2 default_server;

La primera línea se refiere a las conexiones IPv4, la segunda línea se refiere a las conexiones de tipo IPv6

Cambiemos el nombre_servidor ingresando nuestro nombre de dominio, por ejemplo:


server_name esempio.com;

Guardemos y cerremos el archivo.

Para comprobar si no hemos cometido ningún error, desde el terminal:

sudo nginx -t

Si no se cometieron errores, recibiremos el siguiente resultado:


nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
 nginx: configuration file /etc/nginx/nginx.conf test is successful

Instalamos certificados SSL

Para instalar los certificados SSL necesarios para usar el protocolo HTTPS y el puerto 443 recomiendo leer la siguiente guía: Instale Let's Encrypt para Nginx en Ubuntu 18.04 LTS.

Siguiendo esta guía, podrá instalar certificados SSL gratis con Let's Encrypt.

Optimizar Nginx

HTTP /2 tiene una enorme lista negra de cifrados antiguos e inseguros, por lo que debemos evitarlos. Las suites de cifrado son un conjunto de algoritmos criptográficos que describen cómo se deben cifrar los datos de transferencia.

Usaremos un conjunto de cifrados muy popular, cuya seguridad ha sido aprobada por gigantes de Internet como CloudFlare.

Abramos el siguiente archivo de configuración:

sudo nano /etc/nginx/nginx.conf

Agregamos las siguientes líneas después de ssl_prefer_server_ciphers on;


ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
 ssl_session_cache shared:SSL:5m;
 ssl_session_timeout 1h;

ssl_session_cache especifica el tamaño del caché que contendrá la información de la sesión. ssl_session_timeout limita el tiempo que se almacenan en caché ciertas sesiones.

También agregamos esta línea siempre en el mismo archivo nginx.conf:

add_header Strict-Transport-Security "max-age=15768000" always;

Este encabezado debería protegernos de los ataques de degradación del protocolo.

De forma predeterminada, este encabezado no se agrega a las solicitudes de subdominios. Si tiene subdominios, debe agregar la variable includeSubDomains al final de la línea, así:


add_header Strict-Transport-Security "max-age=15768000; includeSubDomains" always;

Guarde y cierre el archivo.

Comprobemos si hemos cometido algún error:

sudo nginx -t

Si no encontramos ningún error podemos reiniciar Nginx:

sudo service nginx restart

La instalación de Nginx con el protocolo HTTP2 en Ubuntu 18.04 LTS ha finalizado.

Support us with a

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.