Protocolo de transferencia de hipertexto versión 2 (HTTP / 2) es la última versión del protocolo HTTP. Agrega varias características nuevas (protocolos binarios, multiplexación, compresión de encabezados, inserción de servidor, seguridad) en comparación con la versión anterior del protocolo HTTP, es decir HTTP / 1.1. La característica más importante es el uso de formato binario en lugar de formato de texto sin formato, es decir, encapsula todos los mensajes en formato binario siguiendo la semántica HTTP, incluidos verbos, métodos y encabezados. Esto asegura que los servidores y clientes puedan continuar con las aplicaciones existentes. Además, HTTP/2 establece una conexión persistente con el servidor que permite a los clientes enviar múltiples solicitudes sin esperar la respuesta. El servidor puede enviar recursos al cliente ya que la conexión permanece abierta. El protocolo HTTP/2 sólo permite conexiones cifradas, lo que aumenta aún más la seguridad de la aplicación.
El Apache El servidor web admite el protocolo HTTP/2 desde la versión 2.4.17. La versión actual de Apache 2 en los repositorios de Ubuntu 18.04 LTS es 2.4.29 y los repositorios de Ubuntu 20.04 LTS son 2.4.41. Este tutorial proporciona los pasos para configurar el Apache Servidor web a utilizar HTTP / 2 protocolo para enviar y recibir mensajes HTTP. Este tutorial proporciona todos los pasos para Ubuntu 20.04 LTS. Los pasos deberían ser similares en otras versiones de sistemas Ubuntu y Linux.
Requisitos previos
Este tutorial asume que los hosts virtuales están configurados para permitir solo solicitudes HTTPS. puedes seguir Configurar host virtual activado Apache, Cómo instalar Let's Encrypt For Apache En Ubuntuy Redirigir HTTP a HTTPS activado Apache para habilitar HTTPS únicamente.
También se supone que el Apache El servidor web está configurado para usar TLS >= 1.2. puedes seguir Cómo habilitar TLS 1.2 y TLS 1.3 en Apache servidor web. Su cliente o navegador también debe admitir HTTP/2.
Podemos comprobar el Apache y la versión OpenSSL como se muestra a continuación.
# Apache Version apache2 -version
# Output Server version: Apache/2.4.41 (Ubuntu) Server built: 2020-04-13T17:19:17
# OpenSSL Version openssl version
# Output OpenSSL 1.1.1f 31 Mar 2020
Cambiar a PHP-FPM
Esta sección proporciona los pasos para desactivar PHP módulo y habilitar PHP-FPM.
Podemos desactivar PHP Módulo y habilitar PHP-FPM en Ubuntu 18.04 LTS como se muestra a continuación.
# Install PHP-FPM sudo apt-get install php7.2-fpm
# Disable PHP Module sudo a2dismod php7.2
# Enable PHP-FPM sudo a2enconf php7.2-fpm
# Enable FastCGI Module sudo a2enmod proxy_fcgi
Podemos desactivar PHP Módulo y habilitar PHP-FPM en Ubuntu 20.04 LTS como se muestra a continuación.
# Install PHP-FPM sudo apt-get install php7.4-fpm
# Disable PHP Module sudo a2dismod php7.4
# Enable PHP-FPM sudo a2enconf php7.4-fpm
# Enable FastCGI Module sudo a2enmod proxy_fcgi
Deshabilite Prefork MPM y habilite Event MPM
Ahora deshabilite Prefork MPM y habilite Event MPM en el Apache Servidor web como se muestra a continuación.
# Disable Prefork MPM sudo a2dismod mpm_prefork
# Output Module mpm_prefork disabled. To activate the new configuration, you need to run: systemctl restart apache2
# Enable Event MPM sudo a2enmod mpm_event
# Output Considering conflict mpm_worker for mpm_event: Considering conflict mpm_prefork for mpm_event: Enabling module mpm_event. To activate the new configuration, you need to run: systemctl restart apache2
# Restart Apache sudo systemctl restart apache2 # OR sudo service apache2 restart
Ahora imprima la salida de phpinformación(). Debería mostrar el PHP FPM como se muestra en Fig 1.
Ahora escriba un programa simple y verifique la versión HTTP inspeccionando la página como se muestra en Fig 2.
Habilitar HTTP / 2
Esta sección proporciona los pasos para habilitar HTTP/2 en Apache Servidor Web. Necesitamos habilitar los módulos SSL y HTTP2 como se muestra a continuación.
# Enable SSL Module sudo a2enmod ssl
# Enable HTTP2 Module sudo a2enmod http2
# Restart Apache sudo systemctl restart apache2 # OR sudo service apache2 restart
Ahora actualice el host virtual como se muestra a continuación.
# Update Virtual Host sudo nano /etc/apache2/sites-available/example.com-le-ssl.conf
# Update <IfModule mod_ssl.c> <VirtualHost *:443> ServerName example.com ServerAlias www.example.com ServerAdmin admin@example.com
DocumentRoot /var/www/example.com/html <Directory /var/www/example.com/html> Options -Indexes +FollowSymLinks DirectoryIndex index.html AllowOverride All Require all granted </Directory>
SSLEngine on SSLProtocol -all +TLSv1.2 +TLSv1.3 Protocols h2 http/1.1 SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem Include /etc/letsencrypt/options-ssl-apache.conf </VirtualHost> </IfModule> # Save and Exit - Ctrl + o -> Enter + Ctrl + x
# Reload Apache sudo systemctl reload apache2 # OR sudo service apache2 reload
En lugar de especificar el protocolo SSL en el host virtual, también podemos actualizar la configuración SSL de Apache para todos los hosts virtuales como se muestra en Cómo habilitar TLS 1.2 y TLS 1.3 en Apache servidor web.
Ahora abra nuevamente la página de demostración. Debería reflejar HTTP/2 como se muestra en Fig 3.
Así es como podemos habilitar el protocolo HTTP 2 en Apache Servidor web.
Resum
Este tutorial proporciona los pasos necesarios para habilitar el protocolo HTTP 2 en el Apache Servidor web.