Proxy reverso do Apache: Altere o protocolo em links e destinos de formulário de http para https

3

Eu tenho um serviço http em execução em 10.1.1.187:8080.

Este é fornecido como um serviço https público para o link que é 10.1.1.186:443 por meio da mágica do proxy do apache:

<VirtualHost 10.1.1.186:443>
    ServerName public.example.com

    #Configure Reverse Proxy
    ProxyRequests Off
    ProxyPreserveHost On

    <Location />
        ProxyPass http://10.1.1.187:8080/
        ProxyPassReverse http://10.1.1.187:8080/

        Order allow,deny
        Allow from all
    </Location>

    #Define Virtual Host Specific SSL information.
    SSLEngine On
    SSLProxyEngine On
    SSLProxyProtocol all -SSLv2

    SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
    SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key

</VirtualHost>

Quando eu insiro o link no meu navegador e clico no certificado, posso obter a primeira página que contém um formulário de login:

<form action="http://public.example.com/login" method="post">
  <--  ... contains username, password fields and a send button -->
</form>

Então o alvo de ação foi muito bom reescrito. Mas o http deve ler https. Como fazer isso?

Seria bom se o link fosse alterado na tag de ação de formulário, apontando para a página https correta, em vez de usar um segundo host virtual http com uma condição de reescrita.

Editar:

Esta é a parte adicional que resolveu (eu coloquei no vhost mas fora do container Location):

SetOutputFilter proxy-html

# On: rewrite also css and javascript - Off: only in HTML
ProxyHTMLExtended Off
# Maybe this should be switched on

ProxyHTMLURLMap http://public.example.com https://public.example.com
    
por mit 18.10.2010 / 04:54

1 resposta

3

Você pode tentar o link . O objetivo é reescrever URLs em uma "situação de proxy".

    
por 18.10.2010 / 11:35