EDIT: RESOLVEU
EDITAR : Substituído 8443 por 8043 (para corrigir possíveis conflitos de números de porta com o Shibboleth SP)
Estou tentando mudar o Apache (apache 2.4) para escutar na porta 8080 e 8043 em vez de 80 e 443 (portanto, não preciso de sudo / root para iniciá-lo). O dispositivo de balanceamento de carga F5 BigIP na frente escuta 80 e 443, e fará o balanceamento de carga dos usuários finais para 8080 e 8043 nos servidores da Web.
No entanto, quando um navegador da Web acessa nosso site (por exemplo, link ), nossas configurações do apache fazem com que ele redirecione com o número da porta 8043! (por exemplo, link ). Isso obviamente acaba (já que o foo.bar resolve o IP do dispositivo F5 BigIP, que não tem nada na porta 8043).
O Apache Config relevante é assim:
<Proxy balancer://UM>
Order deny,allow
Allow from all
BalancerMember ajp://10.25.145.130:8010 route=a keepalive=On disablereuse=On
BalancerMember ajp://10.25.145.131:8010 route=b keepalive=On disablereuse=On
ProxySet lbmethod=bybusyness stickysession=UMLB nofailover=Off
SetEnvIf Cookie UMLB HAVE_UM_ROUTE
Header add Set-Cookie "UMLB=x.%{BALANCER_WORKER_ROUTE}e;path=/;" env=!HAVE_UM_ROUTE
</Proxy>
<Proxy balancer://IDP>
Order deny,allow
Allow from all
BalancerMember ajp://10.25.145.130:8009 route=a keepalive=On disablereuse=On
BalancerMember ajp://10.25.145.131:8009 route=b keepalive=On disablereuse=On
ProxySet lbmethod=bybusyness stickysession=IDPLB nofailover=Off
SetEnvIf Cookie IDPLB HAVE_IDP_ROUTE
Header add Set-Cookie "IDPLB=x.%{BALANCER_WORKER_ROUTE}e;path=/;" env=!HAVE_IDP_ROUTE
</Proxy>
<VirtualHost *:8043>
ServerName foo.bar
DocumentRoot /var/www/html
ProxyPass /idp balancer://IDP/idp
ProxyPass /UserManagement balancer://UM/UserManagement
SSLEngine on
</VirtualHost>
EDIT (informações adicionais) :
Olhando para o HTTP Trace (chrome addon) eu vejo que existem vários redirecionamentos que funcionam bem, mas quando chega aqui ele falha e redireciona com a porta 8043 no final (é por isso que ele falha, se eu remover manualmente: 8043 na URL após o redirecionamento funciona)
GET https://foo.bar/idp/AuthnEngine
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36
Referer: https://foo.bar/idp/profile/SAML2/Redirect/SSO?SAMLRequest=blahblahblah
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8,de;q=0.6
Cookie: JSESSIONID=blahblahblah; _idp_authn_lc_key=blahblahblah; IDPLB=x.b; BIGipServerblahblah=blahblahblah
HTTP/1.1 302 Moved Temporarily
Redirect to: https://foo.bar:8043/UserManagement/private/Login?redirectURL=blahblahblah
Date: Tue, 05 Jan 2016 18:32:32 GMT
Expires: 0
Cache-Control: no-cache, no-store, must-revalidate, max-age=0
Pragma: no-cache
Set-Cookie: _pid_domain=blahblah; Domain=bar.com; Path=/; Secure
Location: https://foo.bar:8043/UserManagement/private/Login?redirectURL=blahblahblah
Content-Length: 0
Keep-Alive: timeout=15, max=98
Connection: Keep-Alive
Content-Type: text/plain; charset=UTF-8
Como o aplicativo tomcat do Back-End está fornecendo o Redirect com o 8043, imaginei que o ProxyPassReverse é a solução correta para corrigir, então tentei o seguinte: (não funcionou, os mesmos resultados)
ProxyPass /idp balancer://IDP/idp
ProxyPassReverse /idp https://foo.bar/idp
ProxyPass /UserManagement balancer://UM/UserManagement
ProxyPassReverse /UserManagement https://foo.bar/UserManagement
Também tentei o seguinte (os mesmos resultados):
ProxyPass /idp balancer://IDP/idp
ProxyPassReverse /idp balancer://IDP/idp
ProxyPass /UserManagement balancer://UM/UserManagement
ProxyPassReverse /UserManagement balancer://UM/UserManagement
Até tentei uma URL falsa para o ProxyPassReverse, só para ver se tinha algum efeito, e NÃO FAZ! Os resultados do Rastreamento HTTP são os mesmos, ele não ajusta o URL nos redirecionamentos do aplicativo de back-end.
O que está acontecendo aqui?
Obrigado
Ben