2016-12-11 2 views
0

У меня есть сервер Apache в системе linux (на amazon aws), работающий с https. У меня также есть кошка. Я хочу использовать apache в качестве входной двери для кота. Я позволил mod_proxy модуля для апача и перенаправление кота прекрасно работает и выглядит следующим образом:Как настроить https для перенаправления apache на tomcat через разъем mod_proxy (ajp)

<VirtualHost *:80> 
    ServerName my.domain.com 

    #Log 
    ErrorLog /var/log/ajp.error.log 
    CustomLog /var/log/ajp.log combined 

    #AJP configuration 
    <Proxy *> 
     Order deny,allow 
     Deny from all 
     Allow from all 
    </Proxy> 

    ProxyRequests Off 

    ProxyPass/ajp://localhost:8009/ 
    ProxyPassReverse/ajp://localhost:8009/ 

</VirtualHost> 

Я добавил эти строки в нижней части моего файл httpd.conf в /etc/httpd/conf.d папка.

Но если я добавлю еще один VirtualHost в файл httpd.conf для перенаправления на https, перенаправление на https будет работать, но будет показана страница тестирования apache, а не страница tomcat. Если я удалю это перенаправление VirtualHost, появится страница apache tomcat. Я также включил модуль mod_rewrite. Свойство https, настроенное в ssl.conf (/etc/httpd/conf.d/ssl.conf), отлично работает. Там я устанавливаю сертификаты ssl, и если клиент делает запрос с известным https-сертификатом, сервер ответит на запрос. Иначе нет.

VirtualHost для протокола HTTPS перенаправлением я добавил в httpd.conf выглядит следующим образом:

<VirtualHost *:80> 
     ServerName my.domain.com 
     RewriteEngine on 
     ReWriteCond %{SERVER_PORT} !^443$ 
     RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R,L] 
    </VirtualHost> 

Можете ли вы мне помочь? Что я здесь делаю неправильно? Должен ли я вносить изменения в файл /etc/httpd/conf.d/ssl.conf? Я очень

ответ

1

Хорошо, теперь у меня есть решение этой проблемы. Я написал эти строки внизу /etc/httpd/conf.d/ssl.conf перед завершением работы VirtualHost:

#Log 
ErrorLog /var/log/ajp.error.log 
CustomLog /var/log/ajp.log combined 

#AJP configuration 
<Proxy *> 
     Order deny,allow 
     Deny from all 
     Allow from all 
</Proxy> 

ProxyRequests Off 

ProxyPass/ajp://localhost:8009/ 
ProxyPassReverse/ajp://localhost:8009/ 
+0

спасибо, человек, совершенная работа – Mchoeti

0

Следующий блок

<VirtualHost *:80> 
    ServerName my.domain.com 
    # [...] 
</VirtualHost> 

, как говорят «этот блок будет обрабатывать все для http://my.domain.com». Вы не можете добавить другого с тем же портом/ServerName: они не будут сливаться, один затеняет другой.

Если часть https уже работает и вы хотите перенаправить весь трафик http на https, вы можете полностью прокомментировать/удалить первый блок <VirtualHost *:80> (с прокси-сервером). Правила прокси-сервера в вашем <VirtualHost *:443> будут обрабатывать все (при условии, что часть https работает).

Если вы хотите переадресовать только части к протоколу HTTPS (не ваш вопрос, но это должно помочь вам понять), вы должны поставить RewriteEngine/ReWriteCond/RewriteRule директивы внутри существующий VirtualHost.

+0

Спасибо за ваш ответ. Теперь я удалил второй VirtualHost, и я изменил первый виртуальный хост с помощью ajp и прокси на . Я перенаправляю на https, но не ссылается на страницу tomcat. Я вижу тестовую страницу apache. Я также попытался добавить правила перезаписи со второго VirtualHost в первом, но поведение такое же. Я вижу тестовую страницу apache, а не стартовую страницу tomcat. Как я могу справиться с этим? Что я делаю неправильно? – alf1990

Смежные вопросы