Запуск Ubuntu 12.04 LTS, Apache2.2.22. Запуск этого на домашнем сервере через один IP. Проблема с запуском виртуальных хостов. У меня есть доменное имя, зарегистрированное в Godaddy. скажем, mysite.com, цель состоит в том, чтобы иметь www.mysite.com и test.mysite.com. В настоящее время работает только www.mysite.com, и если я попробую test.mysite.com, он отображает содержимое сайта www.mysite.com(я убедился, что содержимое обоих сайтов отличается). Я создал два файла на доступных сайтах и запустил соответствующие A2ensite www.mysite.com и A2ensite test.mysite.com. Ниже приведены два файла виртуального хоста:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/test.mysite.com
    ServerName mysite.com
    ServerAlias test.mysite.com
    <Directory />
            Options FollowSymLinks
            AllowOverride None
    </Directory>
    <Directory /var/test.mysite.com/>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride All
            Order allow,deny
            allow from all         
    </Directory>

Вот файл виртуального хоста www.mysite.com:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www.mysite.com
    ServerName mysite.com
    ServerAlias www.mysite.com
    <Directory />
            Options FollowSymLinks
            AllowOverride None
    </Directory>
    <Directory /var/www.mysite.com/>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride All
            Order allow,deny
            allow from all
    </Directory>

В управлении доменом Godaddy я указал @ на мой публичный IP, у меня есть запись "A" для www, указывающая на мой публичный IP, и у меня есть запись "A" для теста, указывающего на публичный ip. Любая помощь в том, что я делаю неправильно, будет принята с благодарностью. Спасибо вам всем.

4 ответа4

1
  1. Убедитесь, что у вас включены виртуальные хосты в httpd.conf:

    NameVirtualHost *:80
    NameVirtualHost *:443
    
  2. ServerName в каждой директиве VirtualHost должно отражать имя хоста, которое оно будет обслуживать.

    ServerAlias следует использовать только при необходимости. Это должны быть дополнительные имена, на которые должен отвечать виртуальный хост. Он не должен совпадать с именем ServerName .

    Первая директива VirtualHost будет использоваться по умолчанию, когда другие совпадения отсутствуют или клиент не предоставляет заголовок Host: (в более старых версиях HTTP этот заголовок не требуется).

  3. Директива <Directory /> вероятно, должна быть в глобальной конфигурации, а не повторяться в каждой конфигурации виртуального хоста. Работает в любом случае, я просто сторонник чистых конфигов.

Убедитесь, что вы перезапускаете Apache после любых изменений в файле (ах) конфигурации.

Редактировать:
Я видел вашу попытку ответить, что означает, что вы получаете сообщение об ошибке, что у вас нет виртуальных хостов, настроенных на *:80 . Ваши виртуальные хосты находятся во включаемом файле, поэтому он должен быть включен в конфигурацию по некоторым причинам.

Мое первое предположение состоит в том, что путь включения неправильный (хотя я думаю, что он пришел из пакета именно таким образом, так что это должно быть правильно - конечно, различные дистрибутивы Linux делают Apache настолько излишне сложным, что он подталкивает меня прямо вверх стена ... но я отвлекся). Обычно относительный путь основан на базе установки Apache. Поскольку я не уверен, что это правильно, и, по-видимому, он не загружает файлы, вы можете изменить его на абсолютный путь и посмотреть, что произойдет (например, /opt /apache22 /enabled-sites или что-то еще в вашей системе). ).

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

0

Для test.mysite.com установите ServerName на test.mysite.com

0

Поскольку я не могу комментировать, я обновлю то, что решило проблему, чтобы другие могли найти ее полезной. Это был случай ошибки пользователя. Я пропустил проверку папки с включенными сайтами, чтобы увидеть, какие сайты были включены, и test.mysite.com там не было. Я запустил a2ensite test.mysite.com и перезапустил Apache, и теперь он работает.

0

Правильные конфиги должны быть такими для каждого сайта

для test.mysite.com

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/test.mysite.com
    ServerName test.mysite.com
    <Directory />
            Options FollowSymLinks
            AllowOverride None
    </Directory>
    <Directory /var/test.mysite.com/>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride All
            Order allow,deny
            allow from all         
    </Directory>

Для mysite.com

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www.mysite.com
    ServerName mysite.com
    <Directory />
            Options FollowSymLinks
            AllowOverride None
    </Directory>
    <Directory /var/www.mysite.com/>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride All
            Order allow,deny
            allow from all
    </Directory>

ServerAlias работают следующим образом.

Если вы хотите, чтобы у того же виртуального хоста были другие адреса, чем вы используете ServerAlias Пример:

ServerName  mysite.com
ServerAl   www.mysite.com

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .