RemoteIpValve não está fazendo seu trabalho

4

Eu tenho vários servidores Tomcat, atrás de um balanceador de carga NetScaler, que faz o descarregamento de SSL. Eu adicionei a seguinte linha ao server.xml em todos eles:

     <Valve className="org.apache.catalina.valves.RemoteIpValve"
            remoteIpHeader="x-forwarded-for" protocolHeader="x-forwarded-proto" />

isso funciona em todos os servidores, exceto 2 (idênticos). Estou tentando fazer com que funcione naqueles dois.

Eu cheirei o tráfego e ele contém o x-forwarded-proto header, com um valor de https , como deveria ser. o resultado retornado para request.getHeader("x-forwarded-proto") é https . no entanto, request.getScheme() retorna http e request.isSecure() retorna false .

como posso fazer o remoteIpValve funcionar?

obrigado.

    
por boazg 17.10.2011 / 14:42

1 resposta

6

Qual é o IP remoto do balanceador de carga?

O endereço IP do dispositivo de conexão (o balanceador de carga, nesse caso) deve estar na configuração internalProxies , caso contrário, as traduções para o endereço remoto, esquema, porta e solicitação de segurança não serão aplicadas.

Por padrão, localhost e a maioria dos intervalos RFC1918 são permitidos (exceto 172.16 / 12). Se o IP do seu proxy ao se conectar ao servidor tomcat não estiver em um desses intervalos, você precisará configurar a configuração internalProxies para permitir seu balanceador de carga.

    
por 17.10.2011 / 20:02

Tags