Апач по HTTP редирект HTTPS с переписать

использование Apache 2.4 на OS X Yosemite. Нужно доработать этот виртуальный хост для его редиректа http://server.kibana и http://www.server.kibana до https://server.kibana

вот Vhost:

<VirtualHost *:8443>
            ServerName www.server.kibana
            ServerAlias server.kibana
            ServerAdmin admin@server.kibana
           # 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>

какие-то предложения, что добавить или как изменить RewriteRule и RewriteCond? Спасибо!

5
задан Drew
источник

2 ответов

вы можете использовать это, и переписать на домен Ваш сертификат выдан:

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

или используйте этот включаемый файл, где вы хотите применить SSL, при включении доступа HTTP к частям сервера.

# Script to require SSL

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

можно использовать %{SERVER_NAME} вместо www.example.com. Это хорошо работает с обычным сертификатом.

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

переменная %{HTTP_HOST} содержит имя хоста из запроса и может быть использован вместо www.exaxmple.com. Однако, это не может быть имя хоста, соответствующее сертификату. Он работает с многодоменными сертификатами.

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

добавлять UseCanonicalName dns конфигурации UseCanonicalName dns даст SERVER_NAME из DNS. Однако необходимо убедиться, что DNS предоставляет нужный домен. Если вы получаете эту работу, вы можете быть в состоянии использовать ту же конфигурацию для всех серверов. Кроме того, можно включить небольшой файл сервера, чтобы указать имя сервера.

вам нужно слушать на различных портах для HTTP и HTTPS. Проверьте каждый перед включением перезаписи. Это минимальная конфигурация для сайта, который прослушивает HTTP и HTTPS и перенаправляет все запросы на HTTPS. Если используются нестандартные порты, перенаправлению потребуется порт. Эта конфигурация зависит от доступа к каталогу, настроенному вне определения виртуального узла.

<VirtualHost *:80 *:443>
    ServerAdmin webmaster@systemajik.com
    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} [R=301,L]

</VirtualHost>
0
отвечен BillThor 2015-06-20 04:40:32
источник

попробуйте добавить этот код ниже "RewriteEngine on" и посмотрите, работает ли он.

RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://server.kibana/ [R=301,L]
0
отвечен KenWeiLL 2015-06-19 03:46:53
источник