Pregunta

Estamos utilizando ProxyPass para redirigir todas las "/ r" peticiones a JBoss en el puerto 18080 de la siguiente manera:

ProxyPreserveHost on
ProxyPass /r http://localhost:18080/redirectService/
ProxyPassReverse /r http://localhost:18080/redirectService/

Pero, eso hace que la dirección IP registrada en el registro de acceso de JBoss como "127.0.0.1". ¿Alguien sabe cómo podemos preservar la IP original desde la que llegó la solicitud HttpServletRequest? Queremos acesss desde JBoss petición de servlet en doGet ()

¿Fue útil?

Solución

Usted puede obtener el host original de X-reenviado-Para campo de cabecera .

Otros consejos

La respuesta de JasonW está muy bien. Pero desde httpd Apache 2.4.6 hay una alternativa: mod_remoteip

Todo lo que debe hacer es:

  1. Puede ser que usted debe instalar el paquete mod_remoteip
  2. Habilitar el módulo:

    LoadModule remoteip_module modules/mod_remoteip.so
    
  3. Añadir lo siguiente a su configuración de Apache httpd. Tenga en cuenta que se debe añadir esta línea no en la configuración del servidor proxy. Debe añadir esto a la configuración del servidor proxy de destino httpd (el servidor detrás del proxy):

    RemoteIPHeader X-Forwarded-For
    

Vea en http://httpd.apache.org/docs/trunk/mod/mod_remoteip.html para más información y más opciones.

Esto tiene una explicación más elegante y más de las posibles soluciones. http://kasunh.wordpress.com/2011 / 10/11 / preservar-remote-IPHost-mientras-proxy /

El puesto se describe cómo utilizar uno popular y uno menor módulos Apache conocidos para preservar host / ip, mientras que en una configuración que implica proxy.

  

Utilice módulo mod_rpaf, instalar y activarlo en el servidor back-end y añadir siguientes directivas de configuración del módulo.   En RPAFenable
  En RPAFsethostname
  RPAFproxy_ips 127.0.0.1

(2017 edición) Ubicación actual de mod_rpaf: https://github.com/gnif/mod_rpaf

Si usted tiene la capacidad para hacerlo, yo recomendaría usar ya sea mod-jk o mod-proxy-AJP para pasar peticiones de Apache a JBoss. El protocolo AJP es mucho más eficiente en comparación con el uso de solicitudes de proxy HTTP y como un beneficio, JBoss verá la petición como viniendo desde el cliente original y no Apache.

Si está utilizando Apache proxy inverso para servir una aplicación que se ejecuta en un puerto localhost debe agregar una ubicación en el host virtual.

<Location />            
   ProxyPass http://localhost:1339/ retry=0
   ProxyPassReverse http://localhost:1339/
   ProxyPreserveHost On
   ProxyErrorOverride Off
</Location>

Para obtener la dirección IP tiene siguientes opciones

console.log(">>>", req.ip);// this works fine for me returned a valid ip address 
console.log(">>>", req.headers['x-forwarded-for'] );// returned a valid IP address 
console.log(">>>", req.headers['X-Real-IP'] ); // did not work returned undefined 
console.log(">>>", req.connection.remoteAddress );// returned the loopback IP address 

Así que, o uso req.ip o req.headers [ 'x-reenvío para']

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top