Archive for febrero, 2007

Compresión web con Mod_gzip y Apache en OpenBSD

Mod_gzip es un módulo que permite a Apache comprimir al vuelo las peticiones HTTP y enviárselas comprimidas al cliente siendo el navegador de éste quién las descomprime, la ventaja es evidente, si los ficheros pesan menos, tardaremos menos tiempo en transferirlos y ahorraremos ancho de banda. Como mi servidor corre en OpenBSD, la versión de Apache es la que trae la propia distribución, es decir Apache 1, para Apache 2 no existe mod_gzip sino mod_deflate. Bueno empezamos (haremos todo como root):

Buscamos el paquete en el FTP de OpenBSD y lo instalamos:

$ pkg_add -r ftp://www.openbsd.org/pub/OpenBSD/4.0/packages/i386/mod_gzip-1.3.26.1ap0.tgz

Activamos el módulo:

$ /usr/local/sbin/mod_gzip-enable

Indicamos a Apache el fichero de configuración de mod_gzip. Por tanto editamos el fichero /var/www/conf/httpd.conf y añadimos después de la linea LoadModule gzip_module /usr/lib/apache/modules/mod_gzip.so:

# Config of mod_gzip module
# The sample config file is in /usr/local/share/examples/mod_gzip/mod_gzip.conf.sample

< IfModule mod_gzip.c>
Include /var/www/conf/mod_gzip.conf

En realidad podríamos configurar los parámetros de mod_gzip dentro de y pero mejor lo hacemos en un fichero aparte, asi pues creamos el fichero /var/www/conf/mod_gzip.conf con el siguiente contenido:

#Fichero de configuracion mod_gzip.conf

# Oscar Moreno Martin (http://migranpipa.dyndns.org)
# The sample config file is in /usr/local/share/examples/mod_gzip/mod_gzip.conf.sample
# mod_gzip config file

#mod_gzip always on
# ============
mod_gzip_on Yes

############
### file sizes ###
###########

mod_gzip_minimum_file_size 300
mod_gzip_maximum_file_size 60000
mod_gzip_maximum_inmem_size 100000

##################
### data management ###
#################

mod_gzip_keep_workfiles No
mod_gzip_temp_dir /tmp
mod_gzip_command_version ‘/mod_gzip_status’
mod_gzip_dechunk Yes

############
### logging ###
###########

LogFormat «%h %l %u %t \»%V %r\» % < s %b mod_gzip: %{mod_gzip_result}n In:%{mod_gzip_input_size}n – < Out:%{mod_gzip_output_size}n = %{mod_gzip_compression_ratio}n pct.» common_with_mod_gzip_info2
CustomLog /var/www/logs/mod_gzip.log common_with_mod_gzip_info2

###########
### filters ###
##########

# phase 1: (reqheader, uri, file, handler)
# =======================
mod_gzip_item_include file \.html$
mod_gzip_item_include file \.jsp$
mod_gzip_item_include file \.php$
mod_gzip_item_include file \.pl$

# phase 2: (mime, rspheader)
# ================
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-httpd-php
mod_gzip_item_include mime ^httpd/unix-directory$
mod_gzip_item_include handler ^perl-script$
mod_gzip_item_include handler ^server-status$
mod_gzip_item_include handler ^server-info$

# Exclude files with extensions
# =================
mod_gzip_item_exclude file \.css$
mod_gzip_item_exclude file \.js$
mod_gzip_item_exclude mime ^image/.*

# Fin del fichero

El fichero lo puedes descargar desde aqui ya que si copias y pegas puede darte un fichero raro pues wordpress mete saltos de lineas y cosas raras dando lugar a un fichero erróneo.

Ahora creamos el fichero de log:

$ touch /var/www/logs/mod_gzip.log

Reiniciamos Apache:

$ apachectl restart

Ahora vamos a probar si mod_gzip esta funcionando, abrimos un navegador y vamos a http://tusitioweb/mog_gzip_status, en mi caso http://migranpipa.dyndns.org/mod_gzip_status

Debe aparecer algo como:

mod_gzip is available…
mod_gzip_version = 1.3.26.1a
mod_gzip_on = Yes

Podemos probar el ratio de compresión en http://web-sniffer.net/ escribimos la dirección de nuestra web y nos muestra entre otras cosas las cabeceras HTTP y el tamaño comprimido (encoded) y sin comprimir (decoded). Por ejemplo mi página principal dió los valores:

Content (encoded: 13.50 KiB / decoded: 54.11 KiB)

La compresión es bastante notable, muy recomendable para servidores caseros como éste, en el cual no tenemos mucho ancho de banda de subida.

febrero 6, 2007 at 8:45 pm Deja un comentario


Calendario

febrero 2007
L M X J V S D
 1234
567891011
12131415161718
19202122232425
262728  

Posts by Month

Posts by Category