Advertencia: post muy muy viejo
el autor 😛
Después de ver en diferentes pruebas(estático+dinámico), hablando con diferentes personas, atando cabos allí y allá, parece que Apache agota sus últimos años como servidor Web en Internet y se me hace harto difícil, dilucidar porque Parallels no ha implementado ya Nginx server en su Panel de Control Plesk.
Es imposible que exista un sólo motivo técnico de peso para mantener esa decisión. Objeciones, las que sean, mótivos reales, no puedo creer que alguien los defienda. Actualmente, sigue siendo el servidor web con mayor presencia en Internet de lejos, seguido no muy cerca por Microsoft, pero esto no cambia que Nginx ocupe ya el casi 7% del total. Es por eso que, cada vez más empezaremos a ver post de este tipo en casi todas las webs, blogs, dedicados al tema.
En este post, veremos como configurar Nginx como proxy, teniendo Apache escuchando en otro puerto que no es el 80. Esto de paso, nos servirá para estar más protegidos ante ataques contra Apache. Este tutorial es válido para configuraciones de Apache con VirtualHost, que necesitan la cabecera Header Host para funcionar.
Configurar repositorio EPEL – 64BITS
wget epel-release-5-4.noarch.rpm
Instalar Nginx
yum install nginx
Ahora tenemos que añadir una serie de nuevos parámetros a la configuración de Nginx.
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
Esto añade tres nuevos headers a la petición que Nginx traslada a Apache. La definición de estas serían:
- Host: necesaria para identificar a que virtualhost queremos acceder
- X-Real-IP: la Ip que utiliza el cliente para conectarse a nginx
- X-Forwarded-For: IP del cliente y los proxys a través de los cuales, llega la petición
Ejemplo de configuración básica de Nginx como proxy de apache(backend)
user nginx; worker_processes 4;
daemon off;
events {
worker_connections 1024;
}
http {
default_type application/octet-stream;
sendfile on;
keepalive_timeout 3;
gzip on;
server {
listen 80;
server_name _;
access_log off;
location / {
proxy_pass http://127.0.0.1:8080; }
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
}
A partir de este momento, podemos optar por seguir el siguiente capítulo de la configuración o no, pues no es relativa al funcionamiento del mismo servidor.
Si tenemos la necesidad imperiosa de generar estadísticas de tráfico, a través de los logs del propio Apache, necesitaremos instalar un módulo adicional. Se trata de mod_rpaf.
Con este módulo indicamos a Apache que utilice los headers X-Forwarded-For y el X-Real-IP como IP en su fichero de log.
Instalar y Configurar Mod_RPAF
cd /root/
wget http://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz
tar zxvf mod_rpaf-0.6.tar.gz # cd mod_rpaf-0.6
Deberemos modificar el Makefile para que encuentre el apxs, ya que por defecto lo busca con el nombre “apxs2“:
sed -i 's/APXS2=\$(shell which \(apxs2\))/APXS2=\$(shell which apxs)/' Makefile
También deberemos, si no esta ya, exportar el bin del apache al PATH y luego configurar
export PATH=$PATH:/usr/local/bin/
make rpaf-2.0 && make install-2.0
echo "LoadModule rpaf_module modules/mod_rpaf-2.0.so" >> /etc/httpd/conf.d/mod_rpaf.conf
# echo "RPAFenable On" >> /etc/httpd/conf.d/mod_rpaf.conf
echo "RPAFsethostname On" >> /etc/httpd/conf.d/mod_rpaf.conf #
echo "RPAFproxy_ips 127.0.0.1" >> /etc/httpd/conf.d/mod_rpaf.conf
echo "RPAFheader X-Forwarded-For" >> /etc/httpd/conf.d/mod_rpaf.conf
Como se ve en el ejemplo, se utiliza la directiva X-Forwarded-For para averiguar la IP de origen del cliente.
Ahora quedaría, configurar Apache y sus VirtualHost para que escuchen por el puerto 8080: NameVirtualHost VirtualHost Listen Posteriormente, faltaría reiniciar Apache y Nginx.
Links