Transportando cookies através de redirecionamentos ao usar o Apache como um proxy reverso

1

Estou tentando configurar um proxy reverso usando o Apache na minha máquina local, tenho o seguinte no meu httpd.conf:

ProxyPass /app http://x.com
ProxyPassReverse /app http://x.com

Tudo funciona bem e navegar para 127.0.0.1/app/* funciona como esperado. O problema surge quando eu navego para uma URL que executa um redirecionamento para um recurso no mesmo nome de host, mas uma porta diferente. Inicialmente, achei que poderia lidar com essa situação da seguinte forma:

ProxyPass /app:81 http://x.com:81
ProxyPassReverse /app:81 http://x.com:81

Mas, embora isso funcione, os cookies não parecem carregar o redirecionamento. Como eu recebo cookies para transportar pelo redirecionamento? Além disso, embora a porta seja realmente conhecida antecipadamente, existe um método mais robusto de lidar com isso de tal forma que um redirecionamento para qualquer porta arbitrária seja tratado corretamente?

    
por dbotha 16.08.2011 / 17:20

3 respostas

0

Você não pode ter uma especificação de porta em ProxyPass /app:81 - em vez disso, a porta a ser ouvida deve ser determinada pelo bloco VirtualHost em que o ProxyPass reside.

Crie um segundo VirtualHost definido para a porta 81 e, em seguida, coloque um ProxyPass /app http://x.com:81 dentro dele para obter o comportamento que você está procurando.

    
por 16.08.2011 / 17:42
1

Bem, você poderia usar números "port" no caminho, mas não use ":".

ProxyPassReverse /app ht+p://x.com
ProxyPassReverse /app81 ht+p://x.com:81

Assumindo que seu site é ht + p: //y.com:

y.com/app - > x.com

y.com/app81 - > x.com:81

Eu prefiro usar nomes dos aplicativos no back-end. Na verdade, você pode ter muitos servidores de aplicativos diferentes, mas deseja que todas as solicitações da Web pareçam ter vindo do mesmo ponto:

ProxyPassReverse /games ht+p://x.com:8080/games
ProxyPassReverse /finance ht+p://f.com:7000/money
ProxyPassReverse /movies ht+p://m.com:8001/cinema

y.com/games - > x.com:8080/games

y.com/finance - > f.com:7000/money

y.com/movies - > m.com:8001/cinema

    
por 04.10.2011 / 09:18
0

Os cookies não são necessariamente compartilhados em diferentes números de porta. Isso se deve a comportamento do navegador mal definido , e não à sua configuração de proxy reverso.

Sugiro que você use a porta 80 (ou 443) para o front-end e use caminhos de URL diferentes em vez de números de porta diferentes.

    
por 17.08.2011 / 05:47