Я пытаюсь настроить apache2 и django для поддержки двух разных сайтов, example.com и beta.example.com, с одного сервера. Но запросы на beta.example.com идут на example.com.
Мой файл конфигурации apache включает:
NameVirtualHost *:80
Include /var/www/main/sites-enabled
Include /var/www/beta/sites-enabled
Для main / site-enabled содержит один файл main, который связан с sites / available / main. Это включает:
<VirtualHost *:80>
ServerName example.com
DocumentRoot /home/mycode/main
</VirtualHost>
<Location "/">
[Django & Python stuff]
SetEnv DJANGO_SETTINGS_MODULE main.settings
</Location>
Для бета / сайт с поддержкой имеет один файл, бета, с аналогичной символической ссылкой.
<VirtualHost *:80>
ServerName beta.example.com
DocumentRoot /home/mycode/beta
</VirtualHost>
<Location "/beta.example.com/">
[Django & Python stuff]
SetEnv DJANGO_SETTINGS_MODULE beta.settings
</Location>
Я настроил свой DNS так, чтобы beta.example.com перенаправлялся на example.com (я думаю, я слаб в DNS). Я действительно думаю, что запросы для beta.example.com попадают на http-сервер как таковой, поскольку журналы доступа показывают запросы для файлов изображений в связи с beta.example.com (я настроил так, что Apache, а не Django, обрабатывает файлы изображений) .
Но страница на сайте beta.example.com - это та страница, которую я ожидал от example.com. И когда я запускаю сервер, меня предупреждают, что «NameVirtualHost *: 80 не имеет VirtualHosts».
Что я здесь делаю не так?
ОБНОВЛЕНИЕ Это похоже на проблему с DNS. Предлагаемые изменения работают должным образом для запросов внутри LAN (где маршрутизатор назначил имя хоста beta.example.com локальным IP-адресом сервера), но не для запросов за пределами LAN. Просмотр журнала other_vhosts_access.log показывает, что внутренние запросы для beta.example.com отображаются как beta.example.com, а внешние запросы отображаются как example.com.
Я пропустил это вчера вечером, потому что я смотрел на поведение сервера за пределами локальной сети и не проверял внутренние запросы. Сожалею.
Пойду посмотрю, как устроен DNS. Спасибо за помощь.
Я не уверен, что это именно ваша проблема, но у NameVirtualHost нет двоеточия. Кроме того, "Местоположение" для бета-сайта неверно. Поместите свой тег Location в обоих случаях внутри контейнера VirtualHost и придерживайтесь символа «/» в обоих случаях.