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.
- Agregar
app.set('trust proxy', true)
a su código de inicialización express. - Cuando desee obtener la ip del cliente remoto, use
req.ip
oreq.ips
de la forma habitual (como si no hubiera un proxy inverso)
Lectura opcional:
- Usar
req.ip
oreq.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 enx-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.- 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.
- Por ejemplo, si usa nginx como su proxy inverso, es posible que deba agregar
- 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.
- 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.
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)