Clicky

Incrementa espectacularmente el rendimiento de tu servidor con HTTP/2

Google SPDY

Instalación de mod_spdy con Apache2 en CentOS 6.x

SPDY es un nuevo protocolo de red cuyo objetivo es acelerar la web. Es la alternativa de Google para el protocolo HTTP y un candidato para HTTP/2.0 .SPDY aumenta la respuesta HTTP con varias características relacionadas con la velocidad como la multiplexación y la compresión de cabecera. Para utilizar SPDY necesitas un servidor web y un navegador (como Google Chrome como Firefox y las nuevas versiones de Internet Explorer) que soporten SPDY. mod_spdy es un módulo de Apache de código abierto que añade soporte para el protocolo SPDY al servidor Apache HTTPD. Este tutorial explica cómo utilizar mod_spdy con Apache2 en CentOS 6.x.

No doy ninguna garantía de que esto vaya a funcionar en tu caso!

1. Nota Preliminar

SPDY corre a través de HTTPS, así que necesitamos habilitar HTTPS en nuestro sitio web para probar SPDY. Ten en cuenta que SPDY recurrirá a HTTPS si el navegador del usuario no soporta SPDY o si las cosas van mal, por lo que la instalación de mod_spdy no dañará tu configuración actual.

Estoy asumiendo que tienes una configuración LAMP, tal como se describe en Installing Apache2 With PHP5 And MySQL Support On CentOS 6.3 (LAMP).

Para propósitos de prueba me limitaré a utilizar el sitio web SSL por defecto que viene con el paquete Apache en CentOS (no es necesario hacer esto si ya tienes un sitio web SSL en el servidor). Si no tienes sitio web SSL, puede habilitar el sitio web predeterminado con SSL de la siguiente manera:

# yum install mod_ssl openssl
# openssl genrsa -out ca.key 4096
# openssl req -new -key ca.key -out ca.csr
# openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt
# cp ca.crt /etc/pki/tls/certs
# cp ca.key /etc/pki/tls/private/ca.key
# cp ca.csr /etc/pki/tls/private/ca.csr
# vi +/SSLCertificateFile /etc/httpd/conf.d/ssl.conf
[...]
SSLCertificateFile /etc/pki/tls/certs/ca.crt
[...]
SSLCertificateKeyFile /etc/pki/tls/private/ca.key
[...]
# /etc/init.d/httpd restart

Ir a la URL del sitio web SSL por defecto (por ejemplo https://www.example.com ) y probar si funciona (aquí estoy usando el certificado auto-firmado predeterminado, es por eso que tengo una advertencia de certificado, pero esto no tiene afectar al uso de SPDY):

error de certificado en el navegador

NOTA: En un sitio en producción el certificado SSL debe ser comprado a una autoridad de certificación comercial, como las que se incluyen entre los certificados aceptados por los navegadores más populares. De otra manera, y si utilizas un certificado auto-firmado, al intentar conectarse por primera vez el visitante el navegador le mostrará la advertencia de "Esta conexión no es de confianza", por lo que puedes perder visitas a tu sitio web.

2 Instalación de mod_spdy

En primer lugar asegúrate de que está instalado at:

# yum install at

Google ofrece paquetes de Fedora/CentOS para mod_spdy en https://developers.google.com/speed/spdy/mod_spdy/ . Basta con descargar el correcto para la arquitectura (32 o 64 bits) de tu servidor ...

64-bit:

# cd /tmp
# wget https://dl-ssl.google.com/dl/linux/direct/mod-spdy-beta_current_x86_64.rpm

32-bit:

# cd /tmp
# wget https://dl-ssl.google.com/dl/linux/direct/mod-spdy-beta_current_i386.rpm

... E instalarlo de la siguiente manera:

# rpm -U mod-spdy-*.rpm

Lo bueno es que, mod_spdy no necesita ninguna configuración, funciona sin añadir nada más (out of the box)!

(De hecho, hay un archivo de configuración, /etc/httpd/conf.d/spdy.conf , pero la configuración por defecto debería estar bien.

# cat /etc/httpd/conf.d/spdy.conf
LoadModule spdy_module /usr/lib64/httpd/modules/mod_spdy.so
<IfModule spdy_module>
# Turn on mod_spdy. To completely disable mod_spdy, you can set
# this to "off".
SpdyEnabled on

# In order to support concurrent multiplexing of requests over a
# single connection, mod_spdy maintains its own thread pool in
# each Apache child process for processing requests. The default
# size of this thread pool is very conservative; you can override
# it with a larger value (as below) to increase concurrency, at
# the possible cost of increased memory usage.
#
#SpdyMaxThreadsPerProcess 30

# Memory usage can also be affected by the maximum number of
# simultaneously open SPDY streams permitted for each client
# connection. Ideally, this limit should be set as high as
# possible, but you can tweak it as necessary to limit memory
# consumption.
#
#SpdyMaxStreamsPerConnection 100
</IfModule>

Puedes aprender más acerca de las opciones de configuración en https://developers.google.com/speed/spdy/mod_spdy/install .

3 Pruebas

Ahora vamos a probar si SPDY está trabajando. Necesitamos un navegador con soporte SPDY. por ejemplo, Google Chrome. Abrir Chrome y volver a cargar tu sitio web con SSL (por ejemplo https://www.example.com ) - es importante que vuelvas a cargal para que pueda utilizar SPDY (la primera vez que ha cargado en el capítulo 1 se utilizó HTTPS normal). Después, abrir una nueva pestaña y escribir la URL:

chrome://net-internals/#spdy

Si todo ha ido bien, ahora debe aparecer listado en la tabla tu host virtual SSL, lo que significa que está trabajando el soporte SPDY.

test spdy en Chrome

(Debido mecanismo de reserva de SPDY a HTTPS, el host virtual SSL todavía funcionará en cualquier otro navegador que no soporte SPDY).

4 Links

SPDY: https://developers.google.com/speed/spdy/
Apache mod_spdy: http://code.google.com/p/mod-spdy/
Paquetes binarios mod_spdy: https://developers.google.com/speed/spdy/mod_spdy/
Configuración mod_spdy: https://developers.google.com/speed/spdy/mod_spdy/install
Apache: http://httpd.apache.org/
CentOS: http://www.centos.org/

Jesus_Caceres