Configuração Proxy do Apache

2

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>
    
por Mubin 03.04.2013 / 17:36

3 respostas

0

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: //.

    
por 04.04.2013 / 14:04
0

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.

    
por 03.04.2013 / 18:24
0

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.

    
por 03.04.2013 / 17:54