Вопрос: Apache NameVirtualHost на порту 443 игнорирует ServerAlias


У меня есть настройка виртуального хоста на основе имени на порте 443, так что запросы на хост «apple.fruitdomain» проксируются к яблочному приложению, а запросы на хосте «orange.fruitdomain» проксированы в оранжевое приложение. Это работает, но я хотел бы добавить ServerAlias ​​для каждого такого, что запросы на «яблоко» хоста проксируются на apple-app, а запросы на «оранжевый» хоста проксированы в оранжевое приложение. Если я просто добавлю директиву ServerAlias ​​на виртуальный хост, это не сработает. ssl.conf:

Listen 443
NameVirtualHost *:443
<VirtualHost *:443>
ServerName apple.fruitdomain
ServerAlias apple
SSLProxyEngine on
ProxyPass /apple-app https://localhost:8181/apple-app
ProxyPassReverse /apple-app https://localhost:8181/apple-app
...
</VirtualHost>
<VirtualHost *:443>
ServerName orange.fruitdomain
ServerAlias orange
SSLProxyEngine on
ProxyPass /orange-app https://localhost:8181/orange-app
ProxyPassReverse /orange-app https://localhost:8181/orange-app
...
</VirtualHost>

Интересно, если я делаю аналогичную настройку, но с портом 80, то ServerAlias ​​работает ...


6
2018-04-05 22:04


Источник


Что вы имеете в виду, «это не работает?» - cjc
Имеет ли orange имя разрешено по правильному адресу? Какое поведение вы видите в своем браузере при попытке подключения? - Shane Madden♦
Когда я говорю, что это не работает, я имею в виду, что прокси-приложение не найдено - браузер возвращает 404 не найден. Я думаю, выбор виртуального хостинга - это то, что не работает. - Ryan
Примечание: разрешение имен работает, потому что, если я перейду к корню, используя короткое имя «оранжевый» или «яблоко», появится индекс корня. Если я добавлю часть «оранжевое приложение» или «яблоко-приложение», когда я получаю 404. - Ryan
@Ryan Можете ли вы проверить, получает ли слушатель порта 8181 проксированный запрос и возвращает сам 404 - выполняет ли он запросы на журнал? Может быть, быстро Redirect указав один из плодов, но не другой, чтобы проверить, что правый призрак достигнут? Кроме того, вы можете проверить и убедиться, что нет ничего неожиданного, возвращаемого из apache2ctl -S? - Shane Madden♦


Ответы:


Ну, из моего тестирования кажется, что директива ServerAlias ​​игнорируется при использовании виртуального хоста на основе имени на порту 443 с Apache 2.2.15. Вероятно, это связано с требованием специального протокола SNI (SNI - Википедия; SNI - Apache Wiki). Работа над созданием двух отдельных виртуальных хостов; из моего примера у меня было бы имя ServerName orange.fruitdomain, а у другого было бы ServerName оранжевым.


6
2018-04-09 14:59



Для любого типа виртуального хостинга на основе имен с использованием SSL потребуется SNI, а не только хосты с несколькими псевдонимами. Подозреваю, что вы не получили правильного ответа здесь. - James Yale
Я думаю, вы неправильно поняли мой ответ. Я не говорю, что только хосты с псевдонимами требуют SNI. Я говорю, что SNI используется с тех пор, как я работаю с SSL (порт 443), и это может объяснить, почему, при прочих равных условиях, псевдоним работает для всех других портов. - Ryan


Чтобы исправить подчеркнутую конфигурацию, вам нужно создать еще один VirtualHost для целей «по умолчанию», используя:

    ServerName localhost
or
    ServerName your_server_name

Проверьте apache httpd docs (пример) - http://httpd.apache.org/docs/2.2/mod/core.html#servername

Директива ServerName устанавливает схему запроса, имя хоста и порт, которые сервер использует для идентификации. Это используется при создании URL-адресов перенаправления.   Кроме того, ServerName используется (возможно, совместно с ServerAlias), чтобы уникально идентифицировать виртуальный хост при использовании виртуальных хостов на основе имени.


0
2017-09-28 12:44





прокомментируйте прослушивание строки 443, потому что прослушивание начинается с ssl automaticaly, и если вы начнете его, прежде чем он увидит конфликт.


-2
2018-05-23 16:58





http://wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI


-7
2018-04-05 22:22



Хотя это теоретически может ответить на вопрос, было бы предпочтительнее чтобы включить здесь основные части ответа и предоставить ссылку для справки. - Iain
Настолько вдохновляющий ответ всеобъемлющий и включает анализ проблем и решение проблем, это не предпочтительнее? Я смущен. - Kondybas
Слишком много ссылок только ответы мертвы. Мы действительно предпочитаем, чтобы ответы содержали контент, а не указатели на контент. Вы можете опубликовать префикс удаленного контента для своего ответа и ссылку для пояснения, но не только ссылку. - Iain
В связанном документе не было указаний относительно того, почему ServerAlias ​​не работает. У меня уже есть виртуальный хостинг на основе имени на порту 443, работающий в простом случае. - Ryan