En esta guía vamos a ver cómo activar HTTP/2 en CWP utilizando el servidor Apache. Si no sabes lo que es HTTP/2, diremos que se trata de una mejora del protocolo HTTP que mejora el rendimiento de las peticiones que se hagan a tu servidor, además de ser más seguro y más estable. Todos los problemas que se han ido solucionando en el protocolo HTTP en la forma de pequeños parches, ahora tienen solución en la capa de transporte gracias a al protocolo HTTP/2.
NOTA: Para activar HTTP/2 en CWP con Nginx consulta la guía para activar HTTP/2 en CWP (Nginx)
Contenidos
Qué es el protocolo HTTP/2
El protocolo HTTP/2 se creó para reducir los tiempos de respuesta en la comunicación cliente-servidor mediante el multiplexado de las peticiones y las respuestas. De esta forma se reduce la carga del protocolo, ya que también se comprimen los campos de la cabecera de las peticiones. También se agrega soporte nativo para los métodos push hacia el servidor y se añaden prioridades de las respuestas.
Para agregar todas estas mejoras se ha añadido un sistema de control de errores, mecanismos de actualización y un nuevo control de flujo de las peticiones. Es importante señalar que HTTP/2 solamente funcionará cuando tienes un certificado SSL instalado en tu dominio, ya que únicamente compatible con HTTPS.
Cómo activar HTTP/2 en Apache
Vamos a ver cómo activar HTTP/2 en CWP (CentOS Web Panel) con Apache. Lo primero que debes hacer es acceder tu servidor mediante SSH. Luego debes seguir las instrucciones que se describen a continuación:
- Actualiza CentOS utilizando estos comandos:
yum clean all yum -y update
- Ahora debes actualizar Autoconf. Para ello debes descargarte el paquete correspondiente mediante wget y descomprimirlo con estos comandos:
cd /usr/local/src rm -rf autoconf-* wget https://ftp.gnu.org/gnu/autoconf/autoconf-latest.tar.gz tar zxvf autoconf-latest.tar.gz
- Compila Autoconf con estos comandos:
cd autoconf-* ./configure --prefix=/usr make && make install
- Seguidamente tienes que actualizar OpenSSL. De nuevo, usa el comando wget para descargar la última versión y luego descomprimirla. En el momento de escribir este artículo, la última versión es la 1.1.1c. Puedes consultar aquí cual es la última versión o instalar la misma que en este tutorial:
cd /usr/local/src rm -rf openssl-* wget https://www.openssl.org/source/openssl-1.1.1c.tar.gz tar zxvf openssl-1.1.1c.tar.gz
- Compila la versión que has descargado de OpenSSL:
cd openssl-* ./config --prefix=/usr --openssldir=/usr/lib64 shared make && make install
- Comprueba la versión de OpenSSL para asegurarte de que se ha actualizado correctamente:
openssl version
- Vamos a descargar e instalar Nghttp2, que es una implementación de HTTP/2. Para ello, debes descargar el archivo correspondiente con wget y luego compilarlo usando make con estos comandos:
cd /usr/local/src rm -rf nghttp2-* yum install libtool -y wget https://github.com/nghttp2/nghttp2/releases/download/v1.39.1/nghttp2-1.39.1.tar.bz2 tar zxvf nghttp2-1.39.1.tar.gz cd nghttp2-* ./configure --prefix=/usr make && make install
- Ahora que ya hemos instalado Nghttp2, debes volver a aplicar la nueva configuración de Apache haciendo un rebuild desde la interfaz de CentOS Web Panel. Para ello accede a la interfaz de CWP y navega hasta Apache Settings (Configuración de Apache) -> Apache Re-Build. Haz clic en Siguiente (Next).
- Al final de la configuración de Apache, debes agregar la siguiente línea –enable-http2:
--enable-http2
En esta imagen puedes ver el resultado final:
Tras escribir la línea debes hacer clic en el botón inferior para iniciar el compilador y así hacer un rebuild de la configuración. Con esto ya estaría el módulo agregado y activado. - Tras hacer el rebuid de Apache tienes activar HTTP/2 desde el archivo de configuración de Apache. Debes editar el archivo http2.conf, cosa que puedes hacer con el editor nano o con tu editor de terminal preferido:
nano /usr/local/apache/conf.d/http2.conf
- Debes agregar las siguientes líneas al archivo de configuración:
LoadModule http2_module modules/mod_http2.so LogLevel http2:info Protocols h2 h2c http/1.1
Puedes escribirlas o copiarlas y pegarlas. Al terminar la edición del archivo, pulsa CTRL+C y acepta cuando se te pregunte si quieres guardar los cambios.
Tars estos pasos, HTTP/2 ya debería estar configurado y activado en Apache.
Cómo verificar si un dominio usa HTTP2
Existen múltiple servicios por internet que te dirán si una URL usa HTTP/2 o no. Así sabrás si los cambios realizados han surtido efecto. En este caso usaremos la herramienta tools.keycdn.com. tendrás que introducir la URL de tu dominio en el campo de texto y hacer clic en Test. Debes recordar que el dominio que introduzcas debe usar SSL:
Si todo va bien, se mostrará un mensaje de confirmación indicando que la URL utiliza el protocolo HTTP/2:
Si algo ha ido mal y el dominio no usa el protocolo HTTP/2 se mostrará un mensaje de error:
En caso de que la prueba falle, revisa todos los pasos de nuevo por si te has olvidado de algo.
Tienes un error en la linea:
wget https://github.com/nghttp2/nghttp2/releases/download/v1.39.1/nghttp2-1.39.1.tar.bz2
deberia terminar en gz
wget https://github.com/nghttp2/nghttp2/releases/download/v1.39.1/nghttp2-1.39.1.tar.gz