msgbartop
Me encanta el olor del napalm por la mañana
msgbarbottom

29 jun 20 Uso de la cabecera X-Forwarded-For en un WordPress tras un proxy inverso

En fechas recientes he realizado un cambio de arquitectura en mi sitio web: he pasado de un servidor con WordPress colgado directamente en Internet a utilizar un frontal NGNIX como proxy inverso a la hora de acceder al sitio web. Hay diversas razones para ello, pero la principal está centrada en la seguridad. Sin embargo, esta arquitectura tiene una contrapartida: dado que el proxy inverso realiza una conversión SNAT de la dirección IP, el servidor WordPress interpreta que todas las peticiones vienen del proxy -lo que en realidad es rigurosamente cierto-, perdiéndose la información relativa a la IP real del equipo desde el que el usuario final accede.

Registros de WordPress mostrando la IP del servidor proxy inverso

Registros de WordPress mostrando la IP del servidor proxy inverso

Por suerte, este comportamiento se puede manipular. La idea general es incrustar la IP del cliente final en un campo cabecera (X-Forwarded-For), y luego modificar el comportamiento de WordPress para que haga uso de la IP contenida en esta cabecera como la IP del usuario. La receta para ello es la siguiente:

  • Configurar el proxy inverso que actúa de frontal para que incruste la IP del cliente en la cabecera X-Forwarded-For: En el caso de un servidor NGINX se realiza añadiendo la siguiente entrada al fichero nginx.conf:
    proxy_set_header X-Forwarded-For $remote_addr;
  • Verificar que la cabecera se inserta adecuadamente: En este caso, se puede realizar mediante una captura tcpdump en el servidor WordPress. Aquí dejo una pequeña guía de cómo realizarlo: TCPDump Capture HTTP GET/POST requests – Apache, Weblogic & Websphere
  • Indicar a WordPress que haga uso de la IP contenida en el campo X-Forwarded-For: Por último, hay que modificar el fichero wp-config.php del servidor WordPress, para reemplazar el valor del campo REMOTE_ADDR, que normalmente es la IP que realiza la petición a WordPress, por la IP contenida en la cebecera X-Forwarded-For. Se realiza incrustando este fragmento de código:
    // Use X-Forwarded-For HTTP Header to Get Visitor's Real IP Address

    if ( isset( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) {
    $http_x_headers = explode( ',', $_SERVER['HTTP_X_FORWARDED_FOR'] );

    $_SERVER['REMOTE_ADDR'] = $http_x_headers[0];
    }

Et voilà! A partir de este momento, nuestro WordPress pasa a mostrar de nuevo correctamente las IPs con la que se accede por parte de los usuarios del sitio a nuestro contenido.

Registro de WordPress mostrando correctamente la IP del usuario final

Registro de WordPress mostrando correctamente la IP del usuario final

VN:F [1.9.20_1166]
Rating: 10.0/10 (1 vote cast)

Etiquetas: , , ,

25 jun 20 Llantas desnudas y piezas 3D

Algunos de los gajes del oficio del ciclismo son los pinchazos. De hecho, es probablemente el problema más común que se afronta en este deporte. Por lo general suelo salir bien equipado de herramientas y repuestos para afrontar casi cualquier inconveniente que me pueda encontrar, pero estos días estoy saliendo a rodar en etapas cortas cerca de casa, y había pillado la costumbre de salir ligero de equipaje: sin camelback, sin herramientas, sin parches, ni agua. Hasta ahora no había tenido mayor inconveniente, pero hace un par de días lo tuve: al pasar por el puente de los Vinateros sobre la vía verde de Itálica pegué un llantazo bastante importante, y acabé con la cámara de la rueda trasera reventada, la cubierta rajada, y tirado a las ocho de la mañana a una distancia de casa lo suficientemente grande como para tenerme un buen rato andando. Y lo peor de todo: con la llamada de la naturaleza dejándose sentir. :mrgreen: Dado que la llanta estaba ya al final de su vida (con importantes holguras que tenía que andar ajustando cada dos por tres -lo que en un buje sellado no es nada bueno-), y la cubierta Maxxis Larsen TT de 1.9” en las lonas, no me importó tomar una decisión drástica:

En la llanta

En la llanta

De esta guisa fue cómo llegué a casa. Tuve que retirar cubierta y cámara, y rodar sobre la llanta para poder llegar. Una sensación rarísima: transmitía todas las irregularidades del camino, con unas vibraciones horribles, y era casi peor en la carretera, ya que además de las irregularidades se podía notar que no era posible balancear la rueda trasera sin riesgo de acabar en el suelo. Aparte del destrozo de la llanta en sí, claro. Pero como iba a deshacerme de ella, no era algo que me importara.

Llanta destrozada

Llanta destrozada

Sí me dio algo más de pena jubilar la cubierta Larsen TT de 1.9, porque parece que ya no las fabrican. Pero así es la vida. Y como no es cuestión de quedarse parado, no tardé mucho en comprar llanta, cubierta y cámara, para tener de nuevo la bici lista para rodar. El modelo de cubierta elegida ha sido una Hutchinson Cobra de 2.1. Es algo más grueso de lo que suelo utilizar para la rueda trasera, pero no era mal momento para probar algo nuevo. Ya de paso aproveché para limpiar la corona antes de ponerla en la nueva llanta. Y este es el resultado:

Nueva rueda trasera

Nueva rueda trasera

El resultado es bueno, pero entre una cosa y otra aún no he podido salir a rodar con la bici. Pero ya puestos, la idea era estar preparado para evitar una situación como la que desencadenó toda esta locura. Sigo con la idea de salir ligero a rodar estas mañanas, antes de empezar a trabajar. No hay inconveniente en echar un juego de parches y una llave de cubiertas en los bolsillos del maillot. Pero la bomba es otra cosa. Así que aprovechando que tengo una impresora 3D, y que no uso bidones, no pude menos que preparar unos anclajes para la bomba que colocar en los agujeros del portabidones. Y el resultado me encanta:

Anclajes 3D para la bomba

Anclajes 3D para la bomba

Así que ahora espero que en caso de volver a tener un inconveniente como este, no vuelva a quedarme tirado en mitad del campo. :D

VN:F [1.9.20_1166]
Rating: 10.0/10 (2 votes cast)

Etiquetas: , , , ,