Habilite HTTP / 2 en Nginx en Ubuntu 16.04

HTTP / 2 es la nueva versión del protocolo HTTP / 1.1 ahora obsoleto que se estandarizó en 1999. Mucho ha cambiado en la web desde entonces. Nuestras aplicaciones son más complejas de lo que eran antes, por lo que para hacer frente a eso, fue necesario un cambio en el protocolo de transporte subyacente. Lo más importante sobre HTTP / 2 es que hará que su página web sea más rápida para los usuarios finales.

En resumen, HTTP / 2 agrega 5 características clave:

  • Conexión única y persistente
  • Multiplexación
  • Compresión de encabezado
  • Priorización de recursos
  • Asegura la capa de transporte (solo válido para navegadores)

Explicar todas estas características está fuera del alcance de este tutorial, pero si desea profundizar en este tema, puedo recomendar un extracto del libro de Redes de navegador de alto rendimiento: extracto HTTP / 2 .

En esta guía vamos a instalar la última versión estable de Nginx en Ubuntu 16.04 (Xenial), generar un certificado SSL autofirmado, habilitar el protocolo HTTP / 2 en Nginx e instalar un navegador basado en texto elinkspara actuar como cliente HTTP.

Instalar Nginx

Para instalar la última versión estable de Nginx, necesitamos emitir bastantes comandos:

  1. Necesitamos descargar la clave pública PGP de Nginx utilizada para firmar paquetes y repositorios y agregarla al conjunto de claves utilizado por el administrador de paquetes para verificar la autenticidad de los paquetes descargados del repositorio.

    wget https://nginx.org/keys/nginx_signing.key && apt-key add nginx_signing.key
    
  2. Elimine la clave PGP del sistema de archivos:

    rm nginx_signing.key
    
  3. Agregar nuevo repositorio

    printf "deb http://nginx.org/packages/ubuntu/ xenial nginx \ndeb-src http://nginx.org/packages/ubuntu/ xenial nginx \n" >> /etc/apt/sources.list.d/nginx.list
    
  4. Actualice su lista de paquetes e instale Nginx:

    apt update && apt install nginx -y
    
  5. Para verificar la versión de Nginx podemos usar lo siguiente:

    nginx -v 
    # nginx version: nginx/1.10.1
    

    Si todo va bien, debería ver un patrón como 1.10.xen la salida al ejecutar el nginx -vcomando.

Certificado autofirmado y HTTP / 2

Aunque las especificaciones HTTP / 2 no obligan a los navegadores a implementar HTTP / 2 sobre TLS, todos los navegadores principales decidieron implementar solo HTTP / 2 sobre TLS, pero no ninguna versión de TLS, solo TLS 1.2 o superior.

Vamos a crear certificados autofirmados para el example.comdominio ficticio , para la producción necesita un dominio válido y usar CA confiable.

  1. Generar clave privada:

    openssl genrsa -aes128 -out example.com.key 2048
    

    Después de ejecutar este comando, deberá ingresar la frase de contraseña 2 veces. Como las frases de contraseña son molestas, las vamos a eliminar.

  2. Eliminar la frase de contraseña de la clave privada:

    openssl rsa -in example.com.key -out example.com.key
    
  3. Generar solicitud de firma de certificado (CSR):

    openssl req -new -sha256 -key example.com.key -out cert-request.csr 
    

    Estamos creando un certificado de dominio único, por lo que debemos establecer un campo de nombre común igual al example.comdominio

  4. Crear certificado:

    openssl x509 -req -days 365 -in cert-request.csr -signkey example.com.key -out example.com.crt
    
  5. Ordenar certificado y clave privada:

    mkdir -p /etc/ssl/testing/private && mkdir /etc/ssl/testing/certs
    mv example.com.key /etc/ssl/testing/private && mv example.com.crt /etc/ssl/testing/certs
    
  6. Hacer directorios de host virtual nginx

    mkdir /etc/nginx/sites-available && mkdir /etc/nginx/sites-enabled
    
  7. Luego corre nano /etc/nginx/nginx.confy encuentra una directiva include /etc/nginx/conf.d/*.conf;. Debajo de esta directiva, agregue include /etc/nginx/sites-enabled/*;Guardar ( CTRL + O ) y luego salga ( CTRL + X ).

    ##
    # Virtual Hosts
    ##
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
    
  8. Cree un archivo llamado directorio example.com.confinterno /etc/nginx/sites-availablecon este comando nano /etc/nginx/sites-available/example.com.confy copie / pegue el siguiente código:

    server {
        listen 80;
        listen [::]:80;
        server_name example.com;
        return 301 https://$host$request_uri;
    }
    server {
        listen 443 ssl http2;
        listen [::]:443 ssl http2;
        server_name example.com;
        root /var/www/html;
        index index.nginx-debian.html;
    
        ssl_certificate /etc/ssl/testing/certs/example.com.crt;
        ssl_certificate_key /etc/ssl/testing/private/example.com.key;
    
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
        ssl_prefer_server_ciphers on;
    }
    

    Felicitaciones, ahora tiene un servidor web habilitado para HTTP / 2 . Agregar http2parámetros a la listendirectiva dentro del host virtual HTTPS le dará soporte HTTP / 2 .

  9. Cree un enlace simbólico para /etc/nginx/sites-available/example.com.confcon este comando:

    ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled
    
  10. Probar la sintaxis de configuración

    nginx -t
    
  11. Reinicie Nginx para aplicar sus cambios:

    systemctl restart nginx
    
  12. Agregar example.comdominio al /etc/hostsarchivo

    echo '127.0.0.1    example.com' >> /etc/hosts
    

Para probar su host virtual necesitamos un navegador basado en texto: enlaces.

  1. Para instalar enlaces utiliza el siguiente comando:

    apt install elinks
    
  2. Para probar su example.comhost virtual ejecute:

    elinks https://example.com
    
  3. Para salir del navegador elinks, presione q en su teclado y luego Enter .

Prueba HTTP / 2

Para ver qué protocolos anuncia el servidor, la forma más fácil es usar el opensslkit de herramientas.

    openssl s_client -connect example.com:443 -nextprotoneg ''

En la salida de este comando, debería ver algo como esto:

    CONNECTED(00000003)
    Protocols advertised by server: h2, http/1.1      

Para ver HTTP / 2 en acción, puede usar las herramientas de desarrollo del navegador. El protocolo HTTP / 2 se indica con h2o con HTTP/2.0identificadores. Abra el panel de red en dev-tools y actualice su página.

Conclusión

Ahora debe saber cuán "fácil" es habilitar HTTP / 2 en la configuración de Nginx, pero esa no es toda la parte de la imagen general. Primero, debe pensar en habilitar TLS / SSL en su servidor con conjuntos de cifrado fuertes y asegurarse de no usar cifrados en la lista negra . Solo después de habilitar TLS / SSL en su servidor, puede comenzar a pensar en habilitar HTTP / 2 .

Dejar un comentario

ZPanel y Sentora en CentOS 6 x64

ZPanel y Sentora en CentOS 6 x64

ZPanel, un panel de control de alojamiento web popular, se bifurcó en 2014 a un nuevo proyecto llamado Sentora. Aprende a instalar Sentora en tu servidor con este tutorial.

Cómo instalar Vtiger CRM Open Source Edition en CentOS 7

Cómo instalar Vtiger CRM Open Source Edition en CentOS 7

Aprende cómo instalar Vtiger CRM, una aplicación de gestión de relaciones con el cliente, en CentOS 7 para aumentar tus ventas y mejorar el servicio al cliente.

Cómo instalar el servidor Counter-Strike 1.6 en Linux

Cómo instalar el servidor Counter-Strike 1.6 en Linux

Esta guía completa le mostrará cómo configurar un servidor Counter-Strike 1.6 en Linux, optimizando el rendimiento y la seguridad para el mejor juego. Aprende los pasos más recientes aquí.

¿Puede la IA luchar con un número cada vez mayor de ataques de ransomware?

¿Puede la IA luchar con un número cada vez mayor de ataques de ransomware?

Los ataques de ransomware van en aumento, pero ¿puede la IA ayudar a lidiar con el último virus informático? ¿Es la IA la respuesta? Lea aquí, sepa que la IA es una bendición o una perdición

ReactOS: ¿Es este el futuro de Windows?

ReactOS: ¿Es este el futuro de Windows?

ReactOS, un sistema operativo de código abierto y gratuito, está aquí con la última versión. ¿Puede satisfacer las necesidades de los usuarios de Windows de hoy en día y acabar con Microsoft? Averigüemos más sobre este estilo antiguo, pero una experiencia de sistema operativo más nueva.

Manténgase conectado a través de la aplicación de escritorio WhatsApp 24 * 7

Manténgase conectado a través de la aplicación de escritorio WhatsApp 24 * 7

Whatsapp finalmente lanzó la aplicación de escritorio para usuarios de Mac y Windows. Ahora puede acceder a Whatsapp desde Windows o Mac fácilmente. Disponible para Windows 8+ y Mac OS 10.9+

¿Cómo puede la IA llevar la automatización de procesos al siguiente nivel?

¿Cómo puede la IA llevar la automatización de procesos al siguiente nivel?

Lea esto para saber cómo la Inteligencia Artificial se está volviendo popular entre las empresas de pequeña escala y cómo está aumentando las probabilidades de hacerlas crecer y dar ventaja a sus competidores.

La actualización complementaria de macOS Catalina 10.15.4 está causando más problemas que resolver

La actualización complementaria de macOS Catalina 10.15.4 está causando más problemas que resolver

Recientemente, Apple lanzó macOS Catalina 10.15.4, una actualización complementaria para solucionar problemas, pero parece que la actualización está causando más problemas que conducen al bloqueo de las máquinas Mac. Lee este artículo para obtener más información

13 Herramientas comerciales de extracción de datos de Big Data

13 Herramientas comerciales de extracción de datos de Big Data

13 Herramientas comerciales de extracción de datos de Big Data

¿Qué es un sistema de archivos de diario y cómo funciona?

¿Qué es un sistema de archivos de diario y cómo funciona?

Nuestra computadora almacena todos los datos de una manera organizada conocida como sistema de archivos de diario. Es un método eficiente que permite a la computadora buscar y mostrar archivos tan pronto como presiona buscar.