Capturar la IP remota (cliente) con Fast API (incluso con un proxy inverso) y mostrarla en logs

Tiempo de lectura: 2 minutos

Registrar la dirección IP del cliente en tus registros usando un middleware personalizado en FastAPI.

Paso 1: Configurar el entorno

Asegúrate de tener instalado FastAPI y cualquier otro módulo que necesites, como uvicorn. Si no los tienes instalados, puedes hacerlo utilizando pip:

pip install fastapi uvicorn

Paso 2: Crear un proyecto de FastAPI

Crea un directorio para tu proyecto y crea un archivo Python, por ejemplo, main.py.

Paso 3: Crear el middleware y la aplicación

Abre main.py y comencemos a escribir el código. Primero, importa las bibliotecas necesarias y configura tu aplicación y logger personalizado:

from fastapi import FastAPI, Request
import logging

app = FastAPI()

# Configura tu logger personalizado
logger = logging.getLogger("my_logger")  # Asegúrate de usar el nombre correcto de tu logger

# Define un middleware personalizado
async def capture_real_ip(request: Request, call_next):
    real_ip = request.headers.get("X-Real-IP")
    if real_ip:
        # Registra la dirección IP en tus logs utilizando el logger personalizado
        logger.info(f"IP del cliente: {real_ip}")
    else:
        host_ip = request.client.host
        # Registra la dirección IP en tus logs utilizando el logger personalizado
        logger.info(f"IP del cliente (usando host): {host_ip}")

    response = await call_next(request)
    return response

# Agrega el middleware a la aplicación
app.middleware("http")(capture_real_ip)

# Ruta de ejemplo
@app.get("/")
async def read_root():
    return {"message": "Hello, World!"}

Asegúrate de reemplazar "my_logger" con el nombre correcto de tu logger personalizado en la línea logger = logging.getLogger("my_logger").

Paso 4: Ejecutar la aplicación

Para ejecutar tu aplicación, utiliza uvicorn. Asegúrate de que main.py esté en el directorio de trabajo actual:

uvicorn main:app --reload

Esto iniciará tu aplicación FastAPI en el servidor de desarrollo de uvicorn.

Paso 5: Realizar una solicitud y verificar los registros

Abre un navegador web o utiliza una herramienta como curl o Postman para hacer una solicitud a tu aplicación FastAPI. Luego, verifica los registros generados por tu logger personalizado. Deberías ver la dirección IP registrada en tus registros.

Con estos pasos, has creado un middleware personalizado en FastAPI para registrar la dirección IP del cliente en tus registros utilizando tu logger personalizado. Puedes personalizar aún más tu middleware y registros según tus necesidades específicas.

Deja un comentario