Red de conocimiento informático - Material del sitio web - Cómo obtener la IP real del proxy inverso

Cómo obtener la IP real del proxy inverso

Esta pregunta lleva a:

& ltHR/>;

En JSP, el método para obtener la dirección IP del cliente es: request.getRemoteAddr(), que en la mayoría de los casos es Efectivo. Sin embargo, después de utilizar software de proxy inverso como Apache y Nagix, no se puede obtener la dirección IP real del cliente. Si se utiliza software de proxy inverso, la dirección IP obtenida mediante el método request.getRemoteAddr() es: 127.0.0.1 o 192.168.1.165438, que no es el cliente real.

Después del proxy, debido a la adición de una capa intermedia entre el cliente y el servicio, el servidor no puede obtener directamente la IP del cliente y la aplicación del lado del servidor no puede devolverla directamente al cliente a través del reenvío. DIRECCIÓN. Sin embargo, la información X-FORWARDED-FOR se agrega al encabezado HTTP de la solicitud reenviada. La dirección IP del cliente original y la dirección del servidor utilizadas para rastrear la solicitud del cliente original.

Por ejemplo, cuando visitamos hangzhou.jsp, la página de inicio de Koubei, no es que nuestro navegador realmente acceda al archivo hangzhou.jsp en el servidor, sino que el servidor proxy Nagix accede primero a hagnzhou.jsp. y luego el servidor proxy accederá a Los resultados se devuelven a nuestro navegador porque la persona que accede a hangzhou.jsp es un servidor proxy. Por lo tanto, la IP obtenida por el método request.getRemoteAddr() de hangzhou.jsp es en realidad la dirección del servidor proxy, no la dirección IP del cliente.

& ltHR/>;

Método 1 para obtener la dirección IP real del cliente:

Cadena pública getRemortIP(solicitud HttpServletRequest){

if(solicitud. get header(" x-forwarded-for ")== null){

solicitud de devolución getremoteaddr();

}

solicitud de devolución get header(" x-forwarded-for ");

}

& ltHR/>;

Obtener la dirección IP real del cliente Método 2

Cadena pública getIpAddr(Solicitud HttpServletRequest){

cadena IP = solicitud. get header(" x-forward-for ");

if (ip = = null || ip.length() == 0 || "desconocido". igual aIgnoreCase(ip)) {

ip = request.getHeader("proxy-cliente-IP ");

}

if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {

IP = solicitud. get header(" WL-Agent-Client-IP ");

}

if(ip == null || ip.length() == 0 ||"Desconocido" .qualsIgnoreCase(ip)) {

IP = solicitud .getremoteaddr();

}

Devolver IP;

}

<HR/>;