Apache http для https перенаправить с переписать
Использование 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 ответа
Вы можете использовать это и переписать домен, на который выдан сертификат:
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>
Попробуйте добавить этот код ниже "RewriteEngine on" и посмотрите, работает ли он.
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://server.kibana/$1 [R=301,L]