Tomcat Redirecionando atrás de um balanceador de carga F5

1

Eu tenho 2 servidores executando 2 instanced do Tomcat cada (uma instância do Tomcat para RC, uma para a produção). Esses servidores, vamos chamá-los server1 e server2, são definidos por trás de um balanceador de carga F5 para manter o tempo de atividade e fornecer suporte SSL. Quando alguém vai para server1: 8081, eles recebem a tela de boas vindas para a segunda instância do tomcat no server1 (e server1: 8080 dará a primeira instância). Ao conectar-se ao servidor: 8443, qual URL de carga balanceada da F5 vai para server1: 8081 e server2: 8081, também receberei a tela de boas-vindas do Tomcat para essa instância ouvindo na porta 8081. No entanto, ao ir para o servidor: 8443 / app /, Eu recebo um erro, e as capturas de pacotes wireshark mostram o redirecionamento indo para a porta 8080 do servidor1. Estou com uma perda de onde o redirecionamento para a porta 8080 está vindo, e não tenho nenhum redirecionamento no meu server.xml para essa configuração de base de instância do tomcat. Alguém tem alguma idéia se talvez durante a compilação do arquivo .war, o aplicativo real pode ter puxado o redirecionamento de porta?

    
por Eric W 17.03.2017 / 18:09

3 respostas

0

Sim, os aplicativos da web geralmente redirecionam se o URL inserido não estiver 100% conforme o esperado. Os desenvolvedores novatos tendem a redirecionar ingenuamente, ou seja, fazem com que o aplicativo responda HTTP 302 http://my-host:8080/proper/link/index.jsp , onde usam um texto codificado para 8080 (e também http , mas esse se torna menos frequentemente um problema com redirecionamentos).

Em outras palavras, eles usam o redirecionamento que funciona perfeitamente em seus laptops, mas falha miseravelmente quando o Tomcat usa uma porta diferente. A F5, como qualquer outro frontend (também conhecido como "proxy reverso") intercepta o redirecionamento HTTP e, se o aplicativo usasse http://server1:8081/xxx , seu navegador receberia https://server:8443/xxx . Mas fica confuso com 8080 e deixa como está.

Minha resposta habitual é enviar um bug aos desenvolvedores de aplicativos: solicitar que o redirecionamento seja feito usando o número da porta determinado automaticamente (se o tomcat ouvir 8085 em algum dia no futuro, o redirecionamento deverá ser em 8085).

    
por 17.03.2017 / 22:19
0

Acabei de receber uma documentação do desenvolvedor do aplicativo sobre como configurar os aplicativos por trás de um balanceador de carga. Eu tive que adicionar os atributos proxyName e proxyPort à minha seção de conector do meu arquivo server.xml.

    
por 20.03.2017 / 15:10
0

Você pode adicionar RemoteIpValve a META-INF / context.xml do seu webapp e ele irá preencher request.serverPort para porta de F5 e até mesmo request.remoteAddr para IP real do cliente em vez de IP do proxy. Em seguida, você pode gerar todos os links como de costume e todos eles conterão o nome do host e a porta do proxy reverso frontal.

    
por 03.11.2017 / 01:49