Saltar al contenido

Express.js: cómo obtener la dirección del cliente remoto

Te damos la bienvenida a nuestra página web, en este sitio vas a encontrar la resolución que buscas.

Si está ejecutando detrás de un proxy como NGiNX o lo que sea, solo entonces debe buscar 'x-forwarded-for':

var ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress;

Si el proxy no es ‘tuyo’, no confiaría en el 'x-forwarded-for' encabezado, porque puede ser falsificado.

Si bien la respuesta de @alessioalex funciona, hay otra forma como se indica en el Expresar detrás de proxies tramo de Express – guía.

  1. Agregar app.set('trust proxy', true) a su código de inicialización express.
  2. Cuando desee obtener la ip del cliente remoto, use req.ip o req.ips de la forma habitual (como si no hubiera un proxy inverso)

Lectura opcional:

  • Usar req.ip o req.ips. req.connection.remoteAddress no funciona con esta solución.
  • Más opciones para 'trust proxy' están disponibles si necesita algo más sofisticado que confiar en todo lo que pasa en x-forwarded-for encabezado (por ejemplo, cuando su proxy no elimina el encabezado x-forwarded-for preexistente de fuentes que no son de confianza). Consulte la guía vinculada para obtener más detalles.
  • Si su servidor proxy no está poblado x-forwarded-for cabecera, hay dos posibilidades.
    1. El servidor proxy no transmite la información sobre dónde se encontraba originalmente la solicitud. En este caso, no habría forma de averiguar de dónde procedía originalmente la solicitud. Primero debe modificar la configuración del servidor proxy.
      • Por ejemplo, si usa nginx como su proxy inverso, es posible que deba agregar proxy_set_header X-Forwarded-For $remote_addr; a su configuración.
    2. El servidor proxy transmite la información sobre el origen de la solicitud de manera patentada (por ejemplo, encabezado http personalizado). En tal caso, esta respuesta no funcionaría. Puede haber una forma personalizada de obtener esa información, pero primero debe comprender el mecanismo.

En nginx.conf Archivo:
proxy_set_header X-Real-IP $remote_addr;

En node.js archivo del servidor:
var ip = req.headers['x-real-ip'] || req.connection.remoteAddress;

tenga en cuenta que expresan encabezados en minúsculas

Te mostramos las reseñas y valoraciones de los usuarios

No se te olvide dar visibilidad a esta noticia si te valió la pena.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags :

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *