Cómo habilitar el soporte HTTP/2 en XAMPP

Cómo habilitar el soporte HTTP/2 en XAMPP

HTTP/2 es bastante rápido en comparación con HTTP/1.1, que es el protocolo que mucha gente todavía usa en pleno 2021. Por ejemplo, en nuestro entorno de desarrollo de XAMPP en Windows, verás que el protocolo que usa XAMPP es HTTP/1.1 por ejemplo, PHPMyAdmin:

PHPMyAdmin XAMPP HTTP/1.1

Puedes ver fácilmente el protocolo en Chrome Devtools haciendo clic derecho en los encabezados de la tabla y marcando la opción Protocolo. Aunque trabajamos localmente con XAMPP, si deseas un rendimiento aún mejor, puedes cambiar a la versión 2 del protocolo.

En este artículo, te explicaré cómo habilitar fácilmente el soporte HTTP/2 localmente en tu instalación de XAMPP.

1. Crea un Virtualhost para tu proyecto con soporte HTTPS

HTTP/2 no funcionará sin HTTPS (protocolo seguro), tenlo en cuenta . Entonces, para proporcionar soporte para HTTP/2, debes tener un VirtualHost que escuche en el puerto 443. Por ejemplo, usando el certificado HTTPS predeterminado de XAMPP (que no es válido, recibirás una advertencia en el navegador, sin embargo, puedes omitirlo y funcionara), puedes crear un VirtualHost que apunte a una página HTML simple como esta:

# 1. Soporte para HTTP en http://127.0.0.40/
<VirtualHost 127.0.0.40:80>
    DocumentRoot "C:/xampp/htdocs/mywebsite"
    DirectoryIndex index.html

    <Directory "C:/xampp/htdocs/mywebsite">
        AllowOverride None
        Order Allow,Deny
        Allow from All
    </Directory>
</VirtualHost>
# 2. Soporte para HTTPS en https://127.0.0.40/
<VirtualHost 127.0.0.40:443>
    DocumentRoot "C:/xampp/htdocs/mywebsite"
    ServerName mywebsite
    SSLEngine on
    SSLCertificateFile "conf/ssl.crt/server.crt"
    SSLCertificateKeyFile "conf/ssl.key/server.key"
    <Directory "C:/xampp/htdocs/mywebsite">
        Options All
    	AllowOverride All
    	Require all granted
    </Directory>
</VirtualHost>

Teóricamente, con un archivo index.html en el directorio especificado, el sitio web debería ser accesible en https://127.0.0.40/ (para HTTPS, requerido para usar HTTP/2) y http://127.0.0.40/ (para HTTP, que obliga a usar HTTP/1.1). No cubriremos demasiado el soporte para HTTPS, ya que puedes implementarlo con un certificado diferente, tal vez uno de confianza y, por lo tanto, lo importante aquí es que el host necesita ejecutar HTTPS para trabajar con la versión HTTP/2.

2. Habilite mod_http2.so

Ahora, la parte más importante de este tutorial es habilitar HTTP / 2 en apache. Esta versión de HTTP es un módulo que puede habilitar fácilmente modificando el C:\xampp\apache\conf\httpd.confarchivo y buscar la mod_http2.solínea y descomentarla (elimine el # al principio de la línea):

# Descomenta la línea que carga el módulo http2 en apache
LoadModule http2_module modules/mod_http2.so

Esto habilitará el soporte para HTTP/2 en Apache. Ahora, de forma predeterminada, apache seguirá usando HTTP/1.1 para VirtualHosts que se ejecutan en el puerto 80 (HTTP) y para aquellos VirtualHosts que se ejecutan en el puerto 443 sin la directiva que indica que debería usar HTTP/2 en su lugar. 

3. Habilite HTTP / 2

Hay 2 opciones para habilitar HTTP / 2 para sus proyectos, puede aplicar la que mejor se adapte a sus necesidades:

A. Habilitar HTTP/2 globalmente

Si deseas habilitar este protocolo globalmente, para que funcione con cualquier VirtualHost que tenga con HTTPS y PHPMyAdmin en XAMPP, solo necesitas agregar la siguiente directiva al final del archivo C:\xampp\apache\conf\httpd.conf:

Protocols h2 h2c http/1.1

Y eso es todo, sin embargo, si necesita habilitarlo para un host virtual específico, también puede hacerlo.

B. Habilite HTTP / 2 solo para un VirtualHost específico

Si solo necesitas usar HTTP/2 en un VirtualHost específico, también es posible. Lo único que debes hacer es agregar la directiva:

Protocols h2 h2c http/1.1

Al comienzo del VirtualHost que escucha en el puerto 443:

# En algún lugar de tu virtualhost
# C:\xampp\apache\conf\extra\httpd-vhosts.conf
<VirtualHost 127.0.0.40:80>
    DocumentRoot "C:/xampp7413/htdocs/mywebsite"
    DirectoryIndex index.html

    <Directory "C:/xampp7413/htdocs/mywebsite">
        AllowOverride None
        Order Allow,Deny
        Allow from All
    </Directory>
</VirtualHost>
<VirtualHost 127.0.0.40:443>
    # Enable HTTP/2 on this Vhost
    Protocols h2 h2c http/1.1
    # Rest of the configuration ...
    DocumentRoot "C:/xampp7413/htdocs/mywebsite"
    ServerName myproject
    SSLEngine on
    SSLCertificateFile "conf/ssl.crt/server.crt"
    SSLCertificateKeyFile "conf/ssl.key/server.key"
    <Directory "C:/xampp7413/htdocs/mywebsite">
        Options All
    	AllowOverride All
    	Require all granted
    </Directory>
</VirtualHost>

Haré énfasis una vez más, que este VirtualHost es solo un ejemplo que usa el certificado autofirmado de XAMPP. Puedes crear tu propio certificado que sea de confianza para el navegador y el sistema operativo.

4. Reinicie Apache 

Finalmente, simplemente reinicie Apache y MySQL (por si acaso) con el panel de control de XAMPP:

Restart Apache XAMPP Control Panel

¡Y luego intenta acceder a tu sitio web en el navegador y verifica su protocolo! Por ejemplo, si habilitaste el protocolo globalmente, deberías poder acceder a él en https: // localhost / phpmyadmin / :

Chrome Skip SSL Verification Localhost

En nuestro caso, recibiremos una advertencia ya que el certificado SSL de XAMPP está autofirmado, pero puedes omitir la advertencia y acceder a PHPMyAdmin localmente de todos modos. En las herramientas de desarrollo de Google Chrome podrás verificar el protocolo de cualquier solicitud para que podamos verificar ahora que nuestro XAMPP está usando HTTP/2:

PHPMyAdmin HTTP/2 XAMPP Localhost

Que te diviertas ❤️!

Esto podria interesarte

Conviertete en un programador más sociable