A principios de 2015 es aprobado como estándar la nueva versión del protocolo HTTP (HTTP2), protocolo de comunicación por excelencia en Internet. A finales de ese mismo año, los navegadores más populares ya implementan dicho protocolo. En su página oficial podéis encontrar información ampliada y aquí una pequeña muestra de las bondades del nuevo protocolo.
Lo que hoy queremos explicaros es cómo hacer que vuestro servidor web favorito (en realidad, nos limitaremos a Apache y Nginx) sirva vuestro contenido utilizando HTTP2.
Antes de proseguir, debéis saber que HTTP2 está basado en el protocolo spdy, por lo que es necesario eliminar cualquier referencia a dicho protocolo de nuestros archivos de configuración de cara a evitar redundancias. Además, los navegadores no soportan HTTP2 sin encriptación, por lo que será necesario un certificado SSL para nuestro dominio – si es que no lo tuviéramos ya.
Una vez finalizada la configuración, el plugin HTTP/2 and SPDY indicator – disponible para Chrome y Firefox – nos permitirá comprobar si todo esta funcionando como debe.
Apache
HTTP2 es soportado por Apache a partir de su versión 2.4.17, a través del módulo mod_http2.
Configuración
El módulo mod_http2 añade una nueva directiva, Protocols, que puede ser utilizada tanto a nivel global como en virtual hosts específicos.
# para https
Protocols h2 http/1.1
...
# para http, aunque la mayoria de los navegadores lo ignoraran y serviran http/1.1
Protocols h2c http/1.1
Nginx
En Septiembre de 2015, Nginx libera su implementación de HTTP2 y la publica en su repositorio open source, haciéndola oficial a partir de la versión 1.9.5. Se recomienda comprobar que versión estamos utilizando antes de proseguir (nginx -V
)
Configuración
La configuración consiste, básicamente, en añadir http2 a la directiva listen del bloque server
server {
listen 443 ssl http2;
ssl_certificate domain.crt;
ssl_certificate_key domain.key;
...
}
Aquí podéis encontrar el anuncio oficial de Nginx acerca de esto y algunos enlaces adicionales de interés sobre HTTP2 y su funcionamiento.