twitter
    Sigueme en el Twitter :-)

08 mayo 2011

Mod_Proxy con Lighttpd

Mucho se habla sobre "arquitectura web", la cual trata de armar y/o optimizar como una web responde ante un cliente o muchos clientes,aplicando dos temas importantes: viabilidad y factibilidad.
Viabilidad, en el sentido de escoger las "herramientas" necesarias para escoger el tipo de arquitectura que tendrá la web (a nivel de software/hardware y seguridad).
Factibilidad, que tan "simple" será para el usuario la viabilidad implementada.
Quizás no sean los terminos correctos mas apropiados, pero creo que son los mas importantes para empezar el post.
Bueno el tema puntual es como Lighttpd puede funcionar como "proxy web" para sevir contenido estatico y redireccionando peteciones a un server web "apache", el cual explico acontinuación:
Esquema:
Server Externo: CentOS(5.6) + Lighttpd (1.4.28) + mod_proxy + php5.3 + ip_publica(200.x.y.x)
Server Interno: Apache(2.x) + php5.3 + ip_interna(192.168.1.20)
La idea es esta: "los clientes consultarán a nuestra web con ip_pública la cual mostrará el contenido "dinámico" será atendido por lighttpd, mientras que el contenido "estadico" atendido por Apache, ubicado en otro server. Aquí un alto, en este esquema yo planteo que, las peticiones dinamicas serán atendidas por un server, y las peticiones estaticas por otro, que puede ser un server "externo" y/o funcionar en el mismo server. Para este último caso, hay que tener en cuenta que, Apache debe de escuchar otro puerto distinto al de Lighttp.
Configurando Lighttp
1.- Editamos el archivo "proxy.conf" ubicado en:/etc/lighttp/conf.d/proxy y añadimos esto:
$HTTP["url"] !~ "\.(js|css|gif|jpg|png|ico|txt|swf|psd)$" {
proxy.server = ( "" => (
( "host" => "192.168.1.20",
"port" => 80 )
)
)
}
# make virtual host for static content.
$HTTP["host"] == "192.168.1.20" {
var.server_name = "static.example.com"
# server.name = server_name
server.document-root = "/var/www/html"
}

2.- Activamos el modulo de proxy en: /etc/lighttpd/modules.conf
Configurando Apache
En httpd.conf, debemos cambiar:
"Listen" a "Listen 192.168.1.20:80"
DirectoryIndex index.php index.html
Iniciamos los servicios en ambos servidores, y revisamos los logs(de lighttp y apache). Nos debe de mostrar el acceso a la web por medio de la ip publica(lighttp), y a asu vez en el log de apache las redirecciones a los contenidos.
De esta manera separamos contenido estatico/dinamico, quizás no sea la forma más "elegante" de hacerlo pero funciona, para la prox. haré lo mismo pero para aplicaciones Java usando Apache y mod_jk. Hasta la prox.

No hay comentarios.: