Por que você está redirecionando para o http: // do AWS1 para o AWS2 novamente, quando você tem o https: // ativado no AWS2? Altere a configuração ProxyPass e ProxyReverse no AWS1 para https: //.
Eu tenho um cenário como abaixo:
Eu tenho um URL com entrada de DNS, digamos http://example.com
Quando o usuário digita http://example.com/portal
, ele acessa o Apache (2.2) Web Server (digamos AWS 1). Lá eu tenho uma Entrada VirtualHost que envia o pedido para outro Servidor Web Apache (digamos AWS 2) em execução na LAN, digamos IP 192.168.1.1
usando proxy reverso.
O Apache Web Server em 192.168.1.1
encaminha a solicitação para o JBoss Application Server, usando o proxy reverso.
Ao fazer isso, o URL da página resultante é alterado para o IP da LAN https:\192.168.1.2\portal
.
Eu quero que o URL original esteja intacto, pois o sistema dos usuários externos não sabe o que é 192.168.1.2
.
Esta é a minha primeira pergunta. Por favor, tenha paciência comigo se não fosse autoexplicativo.
Abaixo está o trecho do arquivo vhost do AWS 1:
<VirtualHost 192.168.10.179:80>
ServerAdmin [email protected]
DocumentRoot "D:/Program Files/Apache Software Foundation/Apache2.2/htdocs"
ServerName example
ServerAlias example
ErrorLog "logs/example-error.log"
# use always https
Redirect pernament / https://example.com/
</VirtualHost>
Abaixo está o trecho do arquivo ssl do AWS 1 (não é a configuração completa):
<VirtualHost 192.168.10.179:443>
ServerAdmin [email protected]
DocumentRoot "D:/Program Files/Apache Software Foundation/Apache2.2/htdocs"
ServerName example
ServerAlias example
ErrorLog "logs/example-ssl-error.log"
ProxyRequests Off
ProxyPreserveHost On
ProxyPass / http://192.168.1.1/
ProxyPassReverse / http://192.168.1.1/
</VirtualHost>
Abaixo está o trecho de código do arquivo vhost do AWS 2:
<VirtualHost 192.168.1.1:80>
ServerAdmin [email protected]
DocumentRoot "D:/Program Files/Apache Software Foundation/Apache2.2/htdocs"
ServerName aws2
ServerAlias aws2
ErrorLog "logs/aws2.log"
# use always https
Redirect pernament / https://192.168.1.1/
</VirtualHost>
Abaixo está o snippet do arquivo ssl do AWS 2 (não é a configuração completa):
<VirtualHost 192.168.1.1:443>
ServerAdmin [email protected]
DocumentRoot "D:/Program Files/Apache Software Foundation/Apache2.2/htdocs"
ServerName aws2
ServerAlias aws2
ErrorLog "logs/aws2-ssl-error.log"
ProxyRequests Off
ProxyPreserveHost On
ProxyPass / http://192.168.1.2/ #This is where JBoss is running
ProxyPassReverse / http://192.168.1.2/
</VirtualHost>
O Redirect permanent
não deve fazer referência ao IP interno, mas à URL real completa do site, pois o redirecionamento é feito no navegador:
Use o URL completo do site na cláusula Redirect
ou use mod_rewrite para um redirecionamento dinâmico.
Use isto: ProxyPreserveHost On
nos dois proxies.
De este link :
"Quando ativado, esta opção passará a linha Host: da solicitação de entrada para o host com proxy, em vez do nome de host especificado na linha ProxyPass.
Esta opção normalmente deve ser desativada. Ele é mais útil em configurações especiais, como hospedagem virtual baseada em nome de massa com proxy, onde o cabeçalho original do host precisa ser avaliado pelo servidor de back-end. "
Editar : Ah, então você encadeou proxies com um gateway! Então você também deve usar a configuração da diretiva ProxyVia On
no aws2, ou talvez nos dois proxies. Tente isso.
Tags jboss apache-2.2 mod-proxy