mod_proxy: caminho de passagem do pedido original para o aplicativo com proxy

2

Estou lutando com o proxy reverso de um aplicativo em execução em um servidor Tomcat em uma porta fechada atrás do Apache. Por conveniência, digamos que eu queira reverter as solicitações de proxy para o link 'no aplicativo Tomcat em' link 'no servidor remoto. Tudo funciona bem com as seguintes configurações de proxy em um arquivo Apache vhost.conf:

ProxyRequests       off
ProxyPass /apps/    http://localhost:8082/
ProxyPassReverse /apps/  http://localhost:8082/

Exceto por uma parte do aplicativo, que gera um arquivo de início da Web Java que deve ser executado no cliente e precisa fazer uma conexão com o aplicativo Tomcat em ' link '(no servidor remoto).

O ponto crucial do problema é que essa conexão obviamente não funcionará, já que a) o pedido de localhost será interpretado em relação ao computador cliente, eb) mesmo que aponte para o servidor remoto, a porta 8082 está fechada lá.

Por isso, descobri como o ProxyPreserveHost pode ajudar, de modo que o nome do host da solicitação original seja propagado para a solicitação de início na Web do Java:

ProxyRequests       off
ProxyPreserveHost   on
ProxyPass /apps/    http://localhost:8082/
ProxyPassReverse /apps/  http://mydomain/

Isso funciona (até mesmo os redirecionamentos internos no trabalho do aplicativo Tomcat com proxy por cortesia da configuração ProxyPassReverse) ... quase. Um problema permanece: a URL usada pelo arquivo webstart do Java está sem a parte '/ apps /' e tentará se conectar ao ' link ', em vez de' link ', que obviamente falhará, pois somente as solicitações iniciadas com / apps / são convertidas em proxy. Aparentemente, o aplicativo com proxy não "vê" o URL original completo (" link '), mas apenas a parte filtrada pelo Manipulação de proxy (' link ').

Existe alguma configuração de proxy que eu esqueci que pode fazer o Apache passar no caminho do URL original para o aplicativo com proxy?

Atenciosamente,

Ron

    
por rvdb 11.04.2012 / 15:51

1 resposta

2

Um back-end de proxy não vê a solicitação original; esse é o ponto principal da intermediação.

Você provavelmente quer o seguinte:

ProxyPass /apps/ http://localhost:8082/apps/
ProxyPassReverse /apps/ http://localhost:8082/apps/

E disponibilize os aplicativos do Tomcat nesse contexto.

    
por 11.04.2012 / 16:42