Перейти к содержимому

Apache http в HTTPS перенаправить с переписать

0

Использование 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 %/% !-f RewriteRule .* http://127.0.0.1:5601% [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!

3 894 просмотра
Drew спросил 11 лет назад
D 864

2 ответа

0

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

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

это ничего не делает. Зачем мне на самом деле нужно проверять порт?

Drew · 11 лет назад · 0

Обе ссылки являются http. http 80 порт доступа по умолчанию, будь то www или не www. Трафик, который идет от порта 80 или через доступ http, должен быть передан к https (через порт 443) с кодом выше. Вы пытались обновить кеш браузера перед его тестированием?

KenWeiLL · 11 лет назад · 0
Я упомянул порт https в ``. Разве этого не должно быть достаточно? Мой апач слушает порт 8080 для http и 8443 для https, но брандмауэр pf перенаправляет весь трафик на порты 80 и 443. Какой порт мне следует написать в приведенном выше коде?
Drew · 11 лет назад · 0

В любом случае, спасибо за подсказку, чтобы очистить кеш. Похоже, сценарий BillThor является единственным рабочим решением.

Drew · 11 лет назад · 0
KenWeiLL ответил 11 лет назад
K 1
0
Принятый ответ

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

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

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

# Script to require SSL  <If "% == 'on'"> SSLOptions +StrictRequire SSLRequireSSL </If> <Else> RedirectMatch permanent ^/?(.*) https://www.example.com/$1 </Else> 

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

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

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

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

Я добавил RewriteCond% ! = На [NC] RewriteRule ^ / (. *) Https://127.0.0.1:5601/$1 [R = 301, L], и это не работает. Он все еще перенаправляет меня на "Работает" страницу по умолчанию apache (((и как попробовать файл?

Drew · 11 лет назад · 0

Таким образом, единственным рабочим решением в моем случае является сценарий, который вы написали. Это работает (после того, как я очистил кеш браузера, но другого решения нет ((() Просто скажем, у меня есть два разных хоста, и я хочу сделать этот скрипт более универсальным (работающим для обоих хостов), как я должен изменить https: // www.example.com / $ 1? есть ли переменные типа % или что-то еще? Или я должен создать для каждого виртуального хоста свой собственный скрипт? Это не очень хорошая идея, ты (((

Drew · 11 лет назад · 0

@Andrew Первый вариант работает для меня, но я использую желаемое имя хоста, а не IP-адрес. Я отредактировал ответ на работу, когда путь не указан. Я обновил ответ, чтобы предоставить параметры для установки имени хоста,

BillThor · 11 лет назад · 0

Не могли бы вы написать примеры для всех трех случаев. Я перепробовал их все, но не уверен, правильно ли я это сделал ... Я всегда получаю одно и то же: 500 Internal Server Error

Drew · 11 лет назад · 0

@ Андрей. Вы проверили журнал ошибок? У меня не будет времени проверить и обновить пост до сегодняшнего вечера.

BillThor · 11 лет назад · 0

Пожалуйста, просто дай мне стартовую позу, когда у тебя будет время

Drew · 11 лет назад · 0

При выполнении этой опции: «... используйте% вместо www.example.com с + StdEnvVars для добавления в директиву SSLOptions ... "единственная ошибка, которую получают, это 127.0.0.1 - - [19 / Jun / 2015: 15: 18: 40 -0700] "GET / HTTP / 1.1" 500 528 127.0.0.1 - - [19 / Jun / 2015: 15: 18: 40 -0700] " GET /favicon.ico HTTP / 1.1 "500 528` in ** access_log **

Drew · 11 лет назад · 0

И абсолютно то же самое с % . и, как я уже говорил, это в браузере: «Внутренняя ошибка сервера. Сервер обнаружил внутреннюю ошибку или неверную конфигурацию и не смог выполнить ваш запрос. Обратитесь к администратору сервера по адресу you@example.com, чтобы сообщить им о времени возникновения этой ошибки и действиях, которые вы выполнили непосредственно перед этой ошибкой. Дополнительная информация об этой ошибке может быть доступна в журнале ошибок сервера.

Drew · 11 лет назад · 0
BillThor ответил 11 лет назад
B 8 674