Configurar HTTP/2 en Nginx, Apache HTTPD, WildFly o Jetty

Publicado por pico.dev el .
blog-stack planeta-codigo planeta-linux
Comentarios

HTTP/2 se puede usar ya, los principales navegadores web, servidores web y de aplicaciones ya han añadido el soporte necesario ofreciendo varias ventajas para los usuarios, desarrolladores, dispositivos cliente y los servidores. En varios de los servidores más ppulares la configuración necesaria no es complicada.

HTTP/2 es el protocolo que ha surgido para mejorar la experiecia de navegación de la web, proporcionará menos latencia y más velocidad siendo más eficiente. En la introducción al protocolo HTTP/2 comentaba de que necesidad surge, sus ventajas, alguna diferencia con HTTP 1.1, varias cosas que los desarrolladores hacíamos que quedarán obsoletas y otras varias que deberemos seguir haciendo. Se pubicó oficialmente en 2015 y los principales navegadores como Mozilla Firefox, Google Chrome y Microsoft Edge ya lo soportan.

En el lado del servidor varios servidores web también han incluido el soporte para HTTP/2, entre ellos Nginx, Apache HTTPD, WildFly y Jetty. Tomcat añadirá el soporte en la versión 9 cuando se publique las especificación de Servlets 4.0 con el soporte de HTTP/2, este soporte necesitará de ALPN que se incluirá en la versión 9 del JDK con lo que en el momento de publicar este artículo todavía quedarán varios meses. Para usar HTTP/2 en Nginx, Apache HTTPD, WildFly y Jetty debemos hacer algunos cambios en sus configuraciones.

Para usar HTTP/2 los navegadores Mozilla Firefox, Google Chrome y Microsoft Edge han anunciado que se necesitará cifrado, por lo tanto deberemos añadir el soporte para TLS/SSL en el servidor previamente.

Nginx

En Nginx es muy sencillo, deberemos modifificar el archivo de configuración default.conf para que quede de forma similar a la siguiente.

Apache HTTPD

En Apache HTTPD deberemos instalar el paquete nghttp2 de nuestra distribución. y usar el módulo mod_http2.so junto con mod_ssl.so para el cifrado.

WildFly

El WildFly deberemos descargar un archivo jar que ofrece el soporte para la negociación de protocolo, ALPN, según la versión del JDK que usemos de Maven Central. Modificamos el archivo de configuración bin/standalone.conf.

Y el archivo standalone/configuration/standalone.xml añadimos un nuevo listener para el subsistema de undertow con HTTP/2 habilitado y un Realm asociado para usar TLS/SSL.

Jetty

Dependiendo de la versión de Java, usaremos el módulo alpn adecuado, en el momento de escribir este artículo con la versión 1.8.0_74 del OpenJDK, modules/alpn-impl/alpn-1.8.0_74.mod.

Yo apoyo al software libre