У меня возникли проблемы с загрузкой виртуального хоста apache правильной папки на моем сервере. Я создаю функцию общедоступных страниц состояния для своей платформы, и одна из функций позволяет пользователям указывать собственный поддомен своего собственного домена, который загружает страницу состояния на моей платформе.
Я запускаю все через один сервер, мой веб-сайт, серверную часть и мои общедоступные страницы состояния, и все они используют виртуальные хосты apache для загрузки этих папок.
Для этого у меня есть две учетные записи cloudflare, мы назовем их «Клиент» и «Компания» (где я — компания).
Мои текущие страницы состояния существуют на status.company.com, они проходят через Cloudflare, это запись A, указывающая на IP-адрес моего сервера.
Я хотел бы указать другой URL-адрес для клиентов на случай, если что-то изменится, поэтому я создал запись CNAME psp.company.com (без прокси), которая указывает на status.company.com, и создал следующий виртуальный хозяин:
<VirtualHost *:80>
ServerName psp.company.com
ServerAlias *.psp.company.com
DocumentRoot /var/www/company-status-pages/dist
ErrorLog /var/log/httpd/psp.company-error.log
CustomLog /var/log/httpd/psp.company.com-access.log combined
</VirtualHost>
Когда я посещаю в своем браузере статус.company.com или psp.company.com, я вижу предполагаемый результат, мой веб-сайт страниц состояния, все это не HTTP, когда я по какой-то причине захожу на psp.company.com.
Затем у клиента есть веб-сайт, который отделен от моей системы, его DNS работает через его собственную учетную запись cloduflare, которую я проинструктировал создать запись CNAME по своему выбору, они создали status.client.com, который указывает на psp .company.com, без прокси.
Когда они загружают status.client.com, они попадают на мой сервер, но он не загружает страницы состояния, он загружает страницу веб-сервера apache по умолчанию, что не является предполагаемым результатом, учитывая, что я создал *
часть субдомена с подстановочными знаками.
Что мне не хватает, и как заставить SSL работать? Я использую Апач 2.4
2 ответа
Мне кажется, вы неправильно поняли смысл CNAME (Каноническое имя) DNS-записи.
Вы можете думать о CNAME записать как псевдоним к другой существующей записи DNS. Давайте посмотрим, что происходит, когда клиент вводит URL http://status.client.com в свой браузер:
- DNS-имя status.client.com разрешается DNS-сервером, который возвращает запись CNAME, ведущую к psp.company.com.
- DNS-имя psp.company.com разрешается DNS-сервером, который возвращает А запись, ведущая к IP-адресу вашего веб-сервера.
- Браузер отправляет HTTP-запрос на ваш веб-сервер с хозяин заголовка HTTP-запроса, установленного на status.client.com.
- Веб-сервер не имеет Имя сервера ни Псевдоним сервера что соответствует хозяин поле запроса, которое по-прежнему status.client.com.
Надеюсь, это объясняет, почему запрос не работает так, как вы ожидали. По сути, это просто подробное объяснение того, что @dave_thompson_085 написал в своем комментарии. На этот вопрос он ответил в своем комментарии.
Вы можете настроить свой веб-сервер так, чтобы он реагировал только на запросы, если вы знаете доменное имя запроса. Единственным исключением является запись по умолчанию для всех без Имя сервера и Псевдоним сервера и у вас может быть только один из них.
Но вы можете реагировать на подпапка такого запроса:
<VirtualHost *:80>
ServerName client.com
ServerAlias *.client.com
DocumentRoot /var/www/html
<Location "/status">
Options FollowSymLinks
# Add more directives specific to the subfolder
</Location>
</VirtualHost>
Возможно, это лучший вариант, если вы не хотите адаптировать свою конфигурацию для определенного субдомена ваших клиентов.
Андреас Пининг
Добавляя к тому, что @Andreas только что объяснил очень простыми словами, вы можете настроить свой виртуальный хост в отдельном файле (также известном как виртуальный хост Apache по умолчанию), просто не забудьте переименовать файл как 000-default.conf
и добавьте свой DocumentRoot
там. Всякий раз, когда ваш веб-сервер не может найти соответствие ServerName
или ServerAlias
он будет использовать эту конкретную конфигурацию по умолчанию и будет обслуживать вашу страницу состояния.
файзан