Express detrás de proxies
Cuando ejecutas una aplicación Express detrás de un reverse proxy, algunas de las APIs de Express pueden devolver valores diferentes a los esperados. Para ajustar esto, el ajuste de aplicación trust proxy puede usarse para exponer información proporcionada por el reverse proxy en las APIs de Express. El problema más común es que las APIs de Express que exponen la dirección IP del cliente pueden mostrar en su lugar una dirección IP interna del reverse proxy.
Nota
Al configurar el ajuste trust proxy, es importante entender la configuración exacta del
reverse proxy. Ya que este ajuste confiará en los valores proporcionados en la petición, es importante que
la combinación del ajuste en Express coincida con cómo opera el reverse proxy.
El ajuste de aplicación trust proxy puede establecerse a uno de los valores listados en la siguiente tabla.
| Tipo | Valor |
|---|---|
| Boolean | Si es Si es AdvertenciaAl establecer a |
| Direcciones IP | Una dirección IP, subnet, o un array de direcciones IP y subnets en las que confiar como reverse proxy. La siguiente lista muestra los nombres de subnet preconfigurados:
Puedes establecer direcciones IP de cualquiera de las siguientes maneras: Cuando se especifica, las direcciones IP o las subnets se excluyen del proceso de determinación de la dirección, y la dirección IP no confiable más cercana al servidor de la aplicación se determina como la dirección IP del cliente. Esto funciona comprobando si |
| Número | Usa la dirección que está como máximo a AdvertenciaAl usar este ajuste, es importante asegurar que no haya múltiples rutas de diferente longitud hacia la aplicación Express tales que el cliente pueda estar a menos del número configurado de saltos de distancia, de lo contrario puede ser posible que el cliente proporcione cualquier valor. |
| Función | Implementación personalizada de confianza. |
Habilitar trust proxy tendrá el siguiente impacto:
El valor de req.hostname se deriva del valor establecido en el header
X-Forwarded-Host, que puede ser establecido por el cliente o por el proxy.X-Forwarded-Protopuede ser establecido por el reverse proxy para indicar a la app si eshttpsohttpo incluso un nombre inválido. Este valor se refleja en req.protocol.Los valores de req.ip y req.ips se rellenan basándose en la dirección del socket y el header
X-Forwarded-For, empezando por la primera dirección no confiable.
El ajuste trust proxy está implementado usando el paquete proxy-addr. Para más información, consulta su documentación.