Diretiva proxypassreverse do Apache2 anexando porta virtualhost?

1

Eu tenho tentado configurar um proxy reverso usando o apache 2 mod_proxy e o proxypass & diretivas proxypassreverse.

Estou instalando o WSO2 Identity Server e desejo acessar esse aplicativo usando um URL como o seguinte.

hxxp://myserver.domain.com/wso2/

O myserver.domain.com está acessível na internet

Internamente na minha rede, configurei um virtualhost em execução na configuração do meu apache2 com os seguintes parâmetros:

Por vários motivos, a porta 80 não está disponível e o virtualhost deve permanecer como: 8080.

Finalmente, aqui está minha configuração de host virtual

<VirtualHost *:8080>

  <Location /wso2/>
    ProxyPass hxxps://internal.wso2.node:9443/
    ProxyPassReverse hxxs://internal.wso2.node:9443/
  </Location>

 ProxyVia On
 ProxyPreserveHost Off
 ProxyAddHeaders Off
 ProxyRequests Off
 SSLProxyEngine On
 SSLProxyCheckPeerCN Off

 </VirtualHost>

A questão:

Eu posso usar meu navegador da web (Firefox / Chrome) para solicitar o recurso link . Nos meus arquivos de log, vejo que a solicitação não atinge o servidor apache e o virtualhost captura o / wso2 / location.

Ele passa pelo proxy e é aterrado no servidor internal.wso2.node. no entanto, o produto WSO2 IS pré-forma vários redirecionamentos que, nos arquivos de log eu vejo solicitando o recurso com a porta anexada.

Aqui está o fluxo de solicitações

  hxxp://myserver.domain.com/wso2/  -> hxxps://internal.wso2.node:9443/
  REDIRECT x3
  hxxps://internal.wso2.node:8080/carbon -> 
  hxxps://internal.wso2.node:8080/carbon/admin/login.jsp

  Back to my web browser
  hxxp://myserver.domain.com:8080/wso2/carbon/admin/login.jsp

Por algum motivo, a resposta do apache anexa seu host virtual à URL que estou solicitando.

Se eu remover a porta: 8080 manualmente e solicitar novamente a URL completa no navegador, ela acessará a multa do recurso. No entanto, qualquer tentativa de acesso usando apenas o link resultará em redirecionamentos e na porta anexada.

    
por Sevren 29.04.2015 / 14:21

1 resposta

1

Tanto quanto você está mudando também o URI ao fazer ProxyPass provavelmente você precisará reescrever também o cookie

<VirtualHost *:8080>
    ServerName myserver.domain.com
    ProxyVia On
    ProxyPreserveHost Off
    ProxyAddHeaders Off
    ProxyRequests Off
    SSLProxyEngine On
    SSLProxyCheckPeerCN Off
    ProxyPass /wso2/ https://internal.wso2.node:9443/
    ProxyPassReverse /wso2/ http://myserver.domain.com:8080/
    ProxyPassReverseCookiePath / /wso2
    ProxyPassReverseCookieDomain internal.wso2.node myserver.domain.com
  </VirtualHost>

Normalmente ProxyPassReverse é um pouco complicado (pelo menos para mim) e provavelmente você precisará de ProxyPassReverseCookiePath , e apenas no caso de ProxyPassReverseCookieDomain (para reescrever seus cookies para manter a sessão).

    
por 29.04.2015 / 15:46