nginx detrás de proxy e ip real

Hace poco, en uno de los proyectos que estamos trabajando, nos encontramos con que los servidores usaban apache. Luego de examinar una cantidad de variables, tomamos la decisión de usar nginx. Sin embargo, luego de que finalizamos la configuración, nos dimos cuenta de que en los logs no aparecía la ip real de los visitantes sino una única ip; Al preguntar al proveedor nos informó que estábamos detrás de un proxy.

Esta situación nos obligó a revisar la configuración de nginx de forma tal de que pudiésemos obtener la ip real del visitante sin que el proveedor, bien conocido en Venezuela por su mal disposición a cambios que les haga salir de su “zona de confort”, tuviese que hacer ningún cambio.

Para ello, colocamos 3 directivas extras en el archivo de configuración del vhost respectivo (archivo /etc/nginx/sites-available/mi_vhost) en la sección server, las cuales son:

    server {
           set_real_ip_from IP_DEL_PROXY;
           real_ip_header X-Real-IP;
           real_ip_recursive on;
           bla, bla, bla
           }

Luego del cambio, reiniciamos el servicio:
     service nginx stop     service nginx start
Antes de realizar este cambio, nuestro log se veía así:
10.10.25.xx – – [22/Nov/2016:20:25:05 -0400] “GET / HTTP/1.0” 200 3573 “-” “Mozilla/5.0 (Windows NT 6.1; rv:50.0) Gecko/20100101 Firefox/50.0”
10.70.25.xx – – [22/Nov/2016:20:25:07 -0400] “GET /xpizarron.png.pagespeed.ic.C7Lq_VUyAW.jpg HTTP/1.0” 200 58211 “http://BLABLABLA/” “Mozilla/5.0 (Windows NT 6.1; rv:50.0) Gecko/20100101 Firefox/50.0”
Luego de realizarlo:
66.249.XX.XX – – [22/Nov/2016:20:38:15 -0400] “GET /xpizarron.png.pagespeed.ic.Qv832abBVy.webp HTTP/1.0” 200 29822 “http://BLABLABLABLA/” “Mozilla/5.0 (Linux; Android 4.2.2; V769M Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.83 Mobile Safari/537.36”
66.249.XX.XX – – [22/Nov/2016:20:38:17 -0400] “GET /favicon.ico HTTP/1.0” 200 29942 “http://BLABLABLABLA/” “Mozilla/5.0 (Linux; Android 4.2.2; V769M Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.83 Mobile Safari/537.36”
Espero les sea útil esta ayuda.

Incrementando tamaño de attach en webmail

En la oficina tenemos varias tecnologías detrás del servicio de correo electrónico, una de ellas es la correspondiente al webmail. Acá usamos al venerable squirrelmail detrás de un proxy web; en cierto momento, hubo necesidad de aumentar el límite del tamaño del attach y para ello, se modificaron los siguientes parametros:

Para php: dos variables son claves, post_max_size y upload_max_filesize; adicionalmente, debe verificarse memory_limit y ese valor debe ser más superior al de las variables anteriores; recordar que estas variables pertenecen al archivo php.ini

Si se usa un proxy web: si nginx es el encargado de esta labor, recordar aumentar el límite en la variable client_max_body_size

Finalmente, si están detrás de un squid, la variable request_body_max_size debe ajustarse al tamaño requerido.

Error 413, apache2 y y nginx

Hace poco me encontré con el siguiente error:

413 request entity too large

Este error se presentaba cuando un usuario deseaba copiar un archivo mayor a N Mb hacia una carpeta compartida mediante dav.

La primera respuesta que intenté fue buscar los archivos de configuración de apache2 para ver si existía alguna directiva que limitase el upload del tamaño de los archivos… nada.

Luego recordé que dicho servicio estaba operando en una máquina virtual y que a la misma se accedía mediante un proxy http implementado con nginx.

Una pequeña búsqueda me devolvió que existe la siguiente directiva en nginx:

client_max_body_size 4M;
client_body_buffer_size 128k;

La cual implemeté en el proxy web y listo, pude permitir subir archivos de tamaño máximo previamente definido.

Que disfruten la ayuda