Назад | Перейти на главную страницу

Настройка Apache2, Django для двух сайтов

Я пытаюсь настроить 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 и придерживайтесь символа «/» в обоих случаях.