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

Понимание основ субдоменов с VirtualHosts

Я хочу сделать для своего сайта два поддомена. Для этого я создал три VirtualHosts в моем default файл под доступными сайтами (я использую Apache в Ubuntu):

<VirtualHost 127.0.0.1>
     ServerName nmagerko.me
     ...
     DocumentRoot /var/www
     ...
</VirtualHost>

<VirtualHost 127.0.0.1>
     ServerName sub1.nmagerko.me
     ...
     DocumentRoot /some/different/path
     ...
</VirtualHost>

<VirtualHost 127.0.0.1>
     ServerName sub2.nmagerko.me
     ...
     DocumentRoot /some/different/path2
     ...
</VirtualHost>

Однако я не уверен, что делать после этого. У меня есть каждый из этих поддоменов и мой основной домен в моем /etc/hosts файл как 127.0.0.1 и я установил рекорды для sub1 и sub2 в редакторе домена моего регистратора доменов. Однако эти записи A указывают на тот же IP-адрес, что и мой основной домен, поскольку все это размещается в одной системе ... что не очень полезно. Итак, когда я иду в sub1.nmagerko.me в моем браузере я получаю такой же сайт, как если бы я зашел на nmagerko.me.

Есть предложения о том, как действовать?

Попробуйте изменить IP-адрес на порт 80 во всех случаях:

<VirtualHost *:80>
    ServerName nmagerko.me
    ...
    DocumentRoot /var/www
    ...
</VirtualHost>

Это может помочь решить проблему, когда виртуальный хост прослушивает только внутренний (локальный) трафик. Поскольку вы устанавливаете записи A для своих доменов, я предполагаю, что вы используете общедоступный сервер?

Не забудьте перезагрузить apache после любого изменения файла conf:

$ sudo service apache2 reload

Наконец, дайте нам знать, что вы тестируете только локально. Если это так, вам, вероятно, не нужно изменять запись A вашего домена (если вы не размещаете свой собственный частный DNS?).

Хм, конфигурация, которую вы написали, мне кажется правильной, поэтому я постараюсь показать вам, как отладить проблему:

1- Убедитесь, что DNS правильно настроен, выполняя dig nmagerko.me, dig sub1.nmagerko.me и dig sub2.nmagerko.me и ищу IP. Использовать wget X.nmagerko.me для тестов браузер мог кэшировать ответы DNS.

2- Убедитесь, что файлы в /some/different/path, /var/www и /some/different/pat2 разные.

3- Убедитесь, что вы перезапускаете apache с помощью

sudo service apache2 перезапуск

Кроме того, вы также можете посмотреть журналы.

Надеюсь на эту помощь.

Без всего httpd.conf (включая включенные) отсюда невозможно сказать, но добавив

NameVirtualHost 127.0.0.1:80

выше вашего первого <virtualHost domain:80> может помочь? После изменения перезапустите apache.