Búsqueda de sitios web

Cómo habilitar HTTP/2.0 en Nginx


HTTP/2 es el último estándar para el protocolo HTTP, es el sucesor de HTTP/1.1. Cada vez es más popular debido a los beneficios que aporta a los desarrolladores web y a los usuarios en general. Proporciona un transporte optimizado para la semántica HTTP al admitir todas las funciones principales de HTTP/1.1, pero pretende ser más eficiente en múltiples formas.

Hay muchas funciones además de HTTP/2 que le brindan más posibilidades para optimizar un sitio web/aplicación. Ofrece verdadera multiplexación y concurrencia, mejor compresión de encabezados (codificación binaria), mejor priorización, mejores mecanismos de control de flujo y un nuevo modo de interacción llamado "server push" que permite a un servidor enviar respuestas a un cliente. . Sin mencionar que HTTP/2 se basa en el protocolo experimental SPDY de Google.

Por lo tanto, el objetivo principal de HTTP/2 es reducir el tiempo total de carga de la página web, mejorando así el rendimiento. También se centra en el uso de recursos de red y servidor, así como en la seguridad porque, con HTTP/2, el cifrado SSL/TLS es obligatorio.

En este artículo, aprenderá cómo habilitar Nginx con soporte HTTP/2 en servidores Linux.

Requisitos previos:

  • Una instalación funcional de NGINX versión 1.9.5 o superior, creada con el módulo ngx_http_v2_module.
  • Asegúrese de que su sitio utilice un certificado SSL/TLS; si no tiene uno, puede obtenerlo de Let's Encrypt o utilizar un certificado autofirmado.

Puede instalar NGINX o implementarlo con una pila LEMP como se describe en las siguientes guías:

  • Cómo instalar Nginx en CentOS 8
  • Cómo instalar el servidor LEMP en CentOS 8
  • Cómo instalar NGINX, MySQL/MariaDB y PHP en RHEL 8
  • Cómo instalar LEMP Stack con PhpMyAdmin en Ubuntu 20.04
  • Instale Nginx con bloques de servidor (hosts virtuales) en Debian 10
  • Cómo utilizar Nginx como equilibrador de carga HTTP en Linux

Cómo habilitar HTTP/2.0 en NGINX

Si tiene NGINX instalado, verifique que se haya creado con el módulo ngx_http_v2_module ejecutando el siguiente comando.

strings /usr/sbin/nginx | grep _module | grep -v configure| sort | grep ngx_http_v2_module

Una vez que tenga un sitio web/aplicación servido por NGINX con HTTPS configurado, abra el archivo del bloque del servidor virtual de su sitio web (o host virtual) para edición.

vi /etc/nginx/conf.d/example.com.conf                    [On CentOS/RHEL]
sudo nano /etc/nginx/sites-available/example.com.conf    [On Ubuntu/Debian]

Puede habilitar la compatibilidad con HTTP/2 simplemente agregando el parámetro http2 a todas las directivas listen como se muestra en la siguiente captura de pantalla.

listen 443 ssl http2;

La configuración del bloque del servidor de muestra se ve a continuación.


server {
        server_name example.com www.example.com;
        access_log  /var/log/nginx/example.com_access.log;
        error_log  /var/log/nginx/example.com_error.log;

        listen [::]:443 ssl ipv6only=on http2; # managed by Certbot
        listen 443 ssl http2; # managed by Certbot

        ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
        ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot
        include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
        ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot    
}

Guarde los cambios en el archivo y ciérrelo.

Luego verifique la sintaxis de configuración de NGINX; si está bien, reinicie el servicio Nginx.

nginx -t
systemctl restart nginx

A continuación, abra un navegador web para verificar si su sitio web se sirve a través de HTTP/2.

http://www.example.com

Para acceder a los encabezados HTTP, haga clic derecho en la página web que se muestra, seleccione Inspeccionar de la lista de opciones para abrir las herramientas de desarrollador, luego haga clic en la pestaña Red y vuelva a cargar la página.

Consulte Protocolos para ver cuál está utilizando su sitio (si no ve el encabezado Protocolos, haga clic derecho en cualquiera de los encabezados, por ejemplo, Nombre y luego marque Protocolo de la lista para mostrarlo como encabezado).

Si su sitio se ejecuta en HTTP/1.1, en Protocolo, verá http/1.1 como se muestra en la siguiente captura de pantalla.

Si se está ejecutando en HTTP/2, en Protocolo, verá h2 como se muestra en la siguiente captura de pantalla. Es posible que desee desactivar la memoria caché del navegador para ver el contenido más reciente que se ofrece directamente desde el servidor web.

¡Eso es todo! Para obtener más información, consulte la documentación del módulo ngx_http_v2_module. No dude en hacer preguntas a través del formulario de comentarios a continuación.