Redirecionamento Apache http para https com Rewrite

0

Usando o Apache 2.4 no OS X Yosemite. Precisa modificar este host virtual para redirecionar http://server.kibana e http://www.server.kibana para https://server.kibana

Aqui está o Vhost:

<VirtualHost *:8443>
            ServerName www.server.kibana
            ServerAlias server.kibana
            ServerAdmin [email protected]
           # RedirectPermanent http://server.kibana https://server.kibana
           # DocumentRoot /usr/local/var/www/kibana-4.0.2-darwin-x64/src/public
            SSLEngine on
            SSLCertificateFile "/usr/local/etc/apache2/2.4/ssl-keys/server.crt"
            SSLCertificateKeyFile "/usr/local/etc/apache2/2.4/ssl-keys/server.key"
        #
        # Proxy
        #
    ProxyRequests Off
    <Proxy *>
        Order Allow,Deny
        Allow from all
        AuthType Basic
        AuthName "Authenticated proxy"
        AuthUserFile /usr/local/etc/apache2/2.4/elastic.htpwd
        Require valid-user
    </Proxy>
        ProxyPass / http://127.0.0.1:5601
        ProxyPassReverse / http://127.0.0.1:5601
        RewriteEngine on
        RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
        RewriteRule .* http://127.0.0.1:5601%{REQUEST_URI} [P,QSA]
            ErrorLog /usr/local/var/log/apache2/kibana_error.log
            LogLevel warn
            CustomLog /usr/local/var/log/apache2/kibana_access.log combined
</VirtualHost>

Alguma sugestão do que adicionar ou como modificar o RewriteRule e o RewriteCond? Thanx!

    
por Drew 19.06.2015 / 04:58

2 respostas

0

Você pode usar isso e reescrever para o domínio que seu certificado foi emitido para:

RewriteCond %{HTTPS} !=on [NC]
RewriteRule ^(.*) https://www.example.com$1 [R=301,L]

Ou use este arquivo de inclusão no qual deseja impor o SSL, enquanto habilita o acesso HTTP a partes do servidor.

# Script to require SSL

<If "%{HTTPS} == 'on'">
    SSLOptions +StrictRequire
    SSLRequireSSL
</If>
<Else>
    RedirectMatch permanent ^/?(.*) https://www.example.com/$1
</Else>

Você pode usar %{SERVER_NAME} em vez de www.example.com . Isso funciona bem com um certificado normal.

RewriteCond %{HTTPS} !=on [NC]
RewriteRule ^(.*) https://%{SERVER_NAME}$1 [R=301,L]

A variável %{HTTP_HOST} contém o nome do host da solicitação e pode ser usada em vez de www.exaxmple.com . No entanto, isso pode não ser um nome de host que corresponda ao certificado. Ele funciona com certificados de vários domínios.

RewriteCond %{HTTPS} !=on [NC]
RewriteRule ^(.*) https://%{HOST_NAME}$1 [R=301,L]

Adicionando UseCanonicalName dns à sua configuração UseCanonicalName dns fornecerá SERVER_NAME do DNS. No entanto, você precisa garantir que o DNS forneça o domínio desejado. Se você conseguir que isso funcione, você poderá usar a mesma configuração para todos os servidores. Como alternativa, você pode incluir um pequeno arquivo específico do servidor para fornecer o nome do servidor.

Você precisa ouvir em portas diferentes para HTTP e HTTPS. Teste cada um antes de ativar a regravação. Esta é uma configuração mínima para um site que escuta HTTP e HTTPS e redireciona todas as solicitações para HTTPS. O redirecionamento precisará de uma porta se forem usadas portas não padrão. Essa configuração depende do acesso ao diretório que está sendo configurado fora da definição do host virtual.

<VirtualHost *:80 *:443>
    ServerAdmin [email protected]
    DocumentRoot /var/www/
    ServerName  www.example.com
    ServerAlias example.com

    SSLEngine On
    SSLCipherSuite HIGH:MEDIUM
    SSLCertificateFile      /etc/ssl/certs/www.example.com-cert.pem
    SSLCertificateKeyFile   /etc/ssl/private/www.example.com-key.pem
    SSLCACertificatePath    /etc/ssl/certs/

    RewriteEngine On
    RewriteCond %{HTTPS} !=on [NC]
    RewriteRule ^(.*) https://%{SERVER_NAME}$1 [R=301,L]

</VirtualHost>
    
por 19.06.2015 / 06:12
0

Tente adicionar este código abaixo de "RewriteEngine on" e veja se funciona.

RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://server.kibana/$1 [R=301,L]
    
por 19.06.2015 / 05:46