Apache ProxyPassReverse e https

5

Eu gostaria de mapear todo o tráfego em 80 e 443 de foo.com para um servidor interno: 192.168.1.101. Eu tenho uma configuração do VirtualHost (Apache 2.2 no Ubuntu) como segue (note que eu tive que quebrar os hyperlinks abaixo porque eu sou um 'novo usuário'):

<VirtualHost *:80>
  ServerName foo.com
  ServerAlias *.foo.com
  ProxyRequests Off
  ProxyPreserveHost On

  <Proxy *>
    Order deny,allow
    Allow from all
  </Proxy>

  ProxyPass / http://192.168.1.101/
  ProxyPassReverse / http://192.168.1.101/
</VirtualHost>

E isso funciona muito bem para o tráfego http. No entanto, não consigo fazer a mesma coisa para https. Eu tentei:

  • Alterando o VirtualHost *: 80 para * - mas isso não funciona (eu preciso disso http- > http e https- > https)

  • Criando uma nova entrada VirtualHost para *: 443 que redireciona para link , mas que falha também (timeouts do navegador)

Eu fiz algumas pesquisas, aqui e em outros lugares, e a pergunta mais próxima que pude encontrar foi isso , mas isso não foi bem respondido.

Além disso, só por curiosidade, tentei mapear todas as portas para https (alterando as duas linhas ProxyPass de http para https (e removendo o: 80 de VH), e isso também não funcionou. Como você faria? isso também?

Alguma ideia? Agradecemos antecipadamente.

    
por Joshua Ball 29.06.2009 / 06:33

4 respostas

5

Isso costumava funcionar para mim

<VirtualHost *:443>                                                                                                                                                                        
 ServerName domaine.com
 SSLProxyEngine on                                                                                                                                                                          
 <Location />                                                                                                                                                                               
 ProxyPass https://www.something.com/                                                                                                                                                           
 ProxyPassReverse https://www.something.com/                                                                                                                                                    
 </Location>                                                                                                                                                                                
</VirtualHost>
    
por 29.06.2009 / 07:39
1

O seguinte funciona para mim:

<VirtualHost A.B.C.D:443>
    ...

    ProxyPass / https://192.168.1.101/
    ProxyPass / https://192.168.1.101/
</VirtualHost>

(Onde A.B.C.D é seu endereço IP público, obviamente)

    
por 29.06.2009 / 06:42
0

Pessoalmente, eu pulo o Apache completamente e uso IPTABLES para encaminhar todo o tráfego em 80 e 443 para o IP necessário, imagino que isso daria maior desempenho.

(assume que você tem acesso na máquina para editar as regras de firewall).

$iptables -A PREROUTING -t nat -i $EXTIF -p tcp --dport 80 -j DNAT --to 192.168.1.101:80
$iptables -A FORWARD -p tcp -m state --state NEW -d 192.168.1.101 --dport 80 -j ACCEPT

responda rapidamente ao meu firewall, onde faço exatamente o que você está tentando fazer.

    
por 17.05.2010 / 22:55
0

Se você quiser que toda a solicitação seja redirecionada para a rede segura, ou seja, por meio de https, adicione o seguinte:

<VirtualHost *:443>
  ServerName ngmlx441
  SSLEngine on
  KeepAliveEnabled ON
  SSLCipherSuite HIGH:MEDIUM
  SSLProtocol all
  SSLProxyEngine on
  SecureProxy ON
  SSLProxyEngine on
  SSLCertificateFile /etc/httpd/conf.d/servername.crt
  SSLCertificateKeyFile /etc/httpd/conf.d/servername.key
  SSLCACertificateFile /etc/httpd/conf.d/orgination.crt
</VirtualHost>
    
por 06.02.2010 / 08:42