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

Вот это Вхост:

<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? Thanx!

2 ответа2

0

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

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

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

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

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

# Script to require SSL

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

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

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

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

RewriteCond %{HTTPS} !=on [NC]
RewriteRule ^(.*) https://%{HOST_NAME}$1 [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}$1 [R=301,L]

</VirtualHost>

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .