Apache2 обратный прокси-сервер 2 виртуальных хостов и ssl
У меня есть 2 сервера: app1.example.biz & app2.example.biz Мне нужно сделать следующее, используя apache2 в качестве обратного прокси-сервера, перенаправить весь трафик из Интернета на соответствующий сервер и использовать ssl. Конфигурация, которую я сделал, позволяет мне перенаправить app1.example.biz на https app1.example.biz, и я могу получить доступ к серверу. Проблема в том, что я не могу сделать то же самое для app2.example.biz, когда я набираю app2.example.biz, он перенаправляет меня на https app1.example.biz!! PS: я не могу опубликовать более двух гиперссылок, потому что я новый пользователь, но моя конфигурация верна.
<VirtualHost *:80>
ServerName app1.example.biz/
Redirect / https app1.example.biz/
</VirtualHost>
<VirtualHost *:443>
ServerName app1.example.biz
ServerAlias app1.example.biz
ProxyPass / http app1.example.biz/
ProxyPassReverse / http app1.example.biz/
SSLEngine on
SSLCertificateFile /etc/ssl/servwiki.crt
SSLCertificateKeyFile /etc/ssl/servwiki.key
SSLVerifyClient none
</VirtualHost>
#<VirtualHost *>
# ServerName app2.example.biz/
# Redirect / https app2.example.biz/
#</VirtualHost>
<VirtualHost *>
ProxyPreserveHost On
ServerName app2.example.biz
ServerAlias app2.example.biz
ProxyPass / http app2.example.biz/
ProxyPassReverse / http app2.example.biz/
SSLEngine on
SSLCertificateFile /etc/ssl/servwiki.crt
SSLCertificateKeyFile /etc/ssl/servwiki.key
SSLVerifyClient none
</VirtualHost>
Я попытался: 1/ используя NameVirtualHost:80 & NameVirtualHost:443 2/ Называя каждый виртуальный хост, как это 3/ добавление
<VirtualHost *>
ServerName www.example.biz
DocumentRoot /usr/local/apache/htdocs
#SSLEngine on
#SSLCertificateFile /etc/ssl/servwiki.crt
#SLCertificateKeyFile /etc/ssl/servwiki.key
#SSLVerifyClient none
</VirtualHost>
это решает проблему перенаправления http app1.example.biz & http app2.example.biz на соответствующий сервер, но не работает с ssl!
plzzzzz помогите
1 ответ
Предположительно, вы пропали :443
в вашей второй конфигурации виртуального хоста (я не уверен, что это просто ошибка копирования / вставки здесь).
Следующая проблема, с которой вы столкнетесь, заключается в том, что вам нужно будет иметь возможность обрабатывать несколько хостов по SSL/TLS. Для этого вам потребуется, чтобы сервер представил действительный сертификат для этого имени хоста во время рукопожатия SSL / TLS, прежде чем отправлять какие-либо HTTP-запросы / ответы. Это можно сделать с помощью одного из следующих методов:
- Используйте один IP-адрес и один сертификат, действительный для всех хостов, которые вы хотите обслуживать одновременно. Этого можно достичь с помощью сертификата с несколькими записями альтернативного имени субъекта (
app1.example.biz
а такжеapp2.example.biz
), иногда называемый UCC, или подстановочный сертификат (например,*.example.biz
, но их использование не рекомендуется). - Используйте разные IP-адреса для каждого хоста, если можете. В этом случае не полагайтесь на
NameVirtualHost
для HTTPS, но установите IP-адреса в каждой записи виртуального хоста и настройте каждый раздел виртуального хоста с его сертификатом. - Используйте один IP-адрес и несколько сертификатов, но ваш клиент должен будет поддерживать расширение индикации имени сервера. (Это не поддерживается ни одной версией IE в Windows XP, некоторых мобильных клиентах и Java 6, например.) Как настроить его в Apache Httpd, описано на этой странице.