Quantcast
Channel: Planeta Código
Viewing all articles
Browse latest Browse all 2710

Blog Bitix: Configurar HTTP/2 en nginx, Apache HTTPD, WildFly o Jetty

$
0
0

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.

<noscript><pre><a href="https://gist.githubusercontent.com/picodotdev/25084c9128028d2896d6/raw/default.conf">default.conf</pre></a></noscript>

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.

<noscript><pre><a href="https://gist.githubusercontent.com/picodotdev/25084c9128028d2896d6/raw/httpd-default.conf">httpd-default.conf</pre></a></noscript>

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.

<noscript><pre><a href="https://gist.githubusercontent.com/picodotdev/25084c9128028d2896d6/raw/standalone.conf">standalone.conf</pre></a></noscript>

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.

<noscript><pre><a href="https://gist.githubusercontent.com/picodotdev/25084c9128028d2896d6/raw/standalone.xml">standalone.xml</pre></a></noscript>

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.

<noscript><pre><a href="https://gist.githubusercontent.com/picodotdev/25084c9128028d2896d6/raw/alpn-1.8.0_74.mod">alpn-1.8.0_74.mod</pre></a></noscript>
<noscript><pre><a href="https://gist.githubusercontent.com/picodotdev/25084c9128028d2896d6/raw/jetty.sh">jetty.sh</pre></a></noscript>

Referencia:
Generar y convertir claves y certificados con OpenSSL
Configurar SSL/TLS en un servidor Tomcat, JBoss, WildFly, Lighttpd, nginx o Apache
NGINX Open Source 1.9.5 Released with HTTP/2 Support
Jetty ALPN
Maven ALPN
Using HTTP2 With Wildfly 9.0.0.Beta1
WildFly Security Realms


Viewing all articles
Browse latest Browse all 2710