Вопрос: Ошибка Apache2 Virtual Host; отображается индекс index.html по умолчанию на субдомене, но правильный контент на www.subdomain


У меня есть Linode, настроенный как веб-сервер Ubuntu 10.04.2 с Apache 2.2.14.

У меня есть в общей сложности 4 сайта, все из которых определены в /etc/apache2/sites-available как виртуальные хосты. Все сайты практически идентичны для конфигурации. И все сайты, но моя последняя работа успешно.

default:      (www.)exampleadnetwork.com
              (www.)example.com
          reseller.example.com
trouble:   client1.example.com

Я продолжаю получать эту страницу, когда я посещаю client1.example.com сайт:

Оно работает!

Это веб-страница по умолчанию для этого сервера.

Программное обеспечение веб-сервера работает, но контент еще не добавлен.

В моем ports.conf файл У меня есть NameVirtualHost правильно установлен на мой IP-адрес на порту 80.

Если я получаю доступ к псевдониму «www.sub.example.com», сайт работает! Если я получаю доступ к нему без www, я вижу выдержку «Это работает», опубликованную выше. Даже apache2ctl -S показывает, что мой файл vhost правильно анализируется и добавляется в микс.

Мой конфигурационный файл vhost выглядит следующим образом:

<VirtualHost 127.0.0.1:80>
    ServerAdmin webmaster@example.com
    ServerName  client1.example.com
    ServerAlias client1.example.com www.client1.example.com
    DocumentRoot    /srv/www/client1.example.com/public_html/
    ErrorLog    /srv/www/client1.example.com/logs/error.log
    CustomLog   /srv/www/client1.example.com/logs/access.log combined

    <directory /srv/www/client1.example.com/public_html/>
        Options -Indexes FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all
    </directory>
</VirtualHost>

На других сайтах представлены варианты:

<VirtualHost 127.0.0.1:80>
    ServerAdmin webmaster@example.com
    ServerName  example.com
    ServerAlias example.com www.example.com
    DocumentRoot    /srv/www/example.com/public_html/
    ErrorLog    /srv/www/example.com/logs/error.log
    CustomLog   /srv/www/example.com/logs/access.log combined
</VirtualHost>

Единственным сайтом, которым отличается другой субдомен:

<VirtualHost 127.0.0.1:80>
    ServerAdmin webmaster@example.com
    ServerName  reseller.example.com
    ServerAlias reseller.example.com
    DocumentRoot    /srv/www/reseller.example.com/public_html/
    ErrorLog    /srv/www/reseller.example.com/logs/error.log
    CustomLog   /srv/www/reseller.example.com/logs/access.log combined
</VirtualHost>

Имена файлов - это полное доменное имя без www. префикс.

Я следил этот совет, но до сих пор не может получить доступ к субдомену должным образом.


6
2017-07-18 20:37


Источник


Ваша конфигурация показывает только один из трех сайтов, на которых настроены другие и как? - Iain
Они также настроены в / etc / apache2 / sites - доступны почти одинаковыми способами. Единственное, что меняется для каждого из них, это имя сервера для имени домена, которое он обрабатывает, и физического пути. - Robert K
Важное значение имеет содержание файлов и имен файлов. - Iain
Есть ли что-то важное в ваших журналах ошибок и доступа? - Iain
Вы упоминаете сайты, доступные, но этот каталог не имеет большого значения, что указано в сайтах с включенными сайтами? Вы запустили a2ensite для создания символической ссылки из включенного -> доступного? - Zoredache


Ответы:


Я столкнулся с одной и той же проблемой и, в конечном итоге, решил, что проблема была в том, что я отключил сайт по умолчанию в apache, отключив его от сайтов:

sudo unlink /etc/apache2/sites-enabled/000-default

После этого все мои сайты отображались правильно. Я вижу, что этот вопрос довольно старый, но надеюсь, что это может помочь кому-то другому.


1
2017-09-13 13:42



Я сделал это, безуспешно. - Robert K
Я использовал a2dissite и перезагрузил apache - и это сработало. Это было только на моем основном виртуальном хосте, это делало это ... Я предполагал, что 000-default был первым виртуальным хостом, чтобы соответствовать, чтобы он никогда не читал тот, который я хотел использовать. - amurrell


Решения других плакатов сделают это.

Отображается «Это работает», потому что все ваши действия Virtuall Host соответствуют локальному хосту. И если вы назовете «client1.example.com», apache будет пропускать localhost Vhosts, и если нет соответствующего Vhost, он будет использовать конфигурацию по умолчанию.

Сделайте то, что сказали другие плакаты (измените свои виртуальные хосты на <VirtualHost *:80> из <VirtualHost *> изменить свой vhost по умолчанию на нужный вам Document.

Не забывайте: даже если вы правильно определяете свои Vhosts, сервер будет вызывать сайт по умолчанию, если кто-то запрашивает ваш сервер без имени хоста (например, через ip-адрес).


1
2017-11-26 22:44





Попробуйте это, не имея повторяющейся записи в ServerName и ServerAlias.

Например:

<VirtualHost *:80>
ServerAdmin webmaster@example.com
ServerName  sub.example.com
ServerAlias www.sub.example.com
DocumentRoot    /srv/www/sub.example.com/public_html/
ErrorLog    /srv/www/sub.example.com/logs/error.log
CustomLog   /srv/www/sub.example.com/logs/access.log combined

<directory /srv/www/sub.example.com/public_html/>
    Options -Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</directory>


0
2017-07-18 20:51



Пробовал это. Я все еще могу получить доступ к обоим адресам, но только к www. префикс работает правильно. - Robert K


Некоторые предложения:

  • Изменить <VirtualHost 127.0.0.1:80> для <VirtualHost *:80>
  • Вы разместили NameVirtualHost *:80 конфигурация?
  • Поместите файл index.html под каждым DocumentRoot, очевидно, каждый с другим сообщением, чтобы определить, к чему вы обращаетесь
  • Попробуйте получить доступ с локального хоста, и если это возможно, попробуйте из другого места

0
2017-07-18 21:40



В порядке FILO: доступ к локальному хосту идентичен удаленному; нет необходимости в индексном файле, все они разные (но одна дает страницу «Это работает» вместо страницы «Установка Wordpress», переход к *: 80 с IP-адреса дает тот же результат. - Robert K
Вы разместили «NameVirtualHost *: 80»? - ghm1014
Да. Он уже был там, я просто изменил IP на *. - Robert K
Я просто скопировал вашу конфигурацию на своем рабочем столе, и все работает отлично. Должно быть что-то еще, какая-то другая конфигурация или, возможно, проблема с браузером? Кэш или что-то еще? - ghm1014
Пробовал с FF, Chrome и cURL с тем же результатом. Должно быть что-то еще в моих конфигурационных файлах, которые это делают. - Robert K


Вы проверили разрешение DNS на своих сайтах?

(www.) sub.example.com оба разрешаются на одну и ту же машину (даже если разные адреса)?

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

Если они бьют по умолчанию, вы должны определить, почему это так ... в чем разница между конфигурациями. Попробуйте изменить IP, как было предложено ранее, поскольку Apache привяжет конфигурацию к определенному IP-адресу, указанному в директиве VirtualHost.


0
2018-01-11 17:09





Ваши настройки не настроены должным образом для NameVirualHost, Избавьтесь от 127.0.0.1 и сделайте это *, Когда вы явно устанавливаете 127.0.0.1 который свяжет все соединения на вашем компьютере с этой конфигурацией. NameVirualHost нужен шаблон *:

<VirtualHost *:80>
    ServerAdmin webmaster@example.com
    ServerName  client1.example.com
    ServerAlias client1.example.com www.client1.example.com
    DocumentRoot    /srv/www/client1.example.com/public_html/
    ErrorLog    /srv/www/client1.example.com/logs/error.log
    CustomLog   /srv/www/client1.example.com/logs/access.log combined

    <directory /srv/www/client1.example.com/public_html/>
        Options -Indexes FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all
    </directory>
</VirtualHost>
The other sites are variations of:

<VirtualHost *:80>
    ServerAdmin webmaster@example.com
    ServerName  example.com
    ServerAlias example.com www.example.com
    DocumentRoot    /srv/www/example.com/public_html/
    ErrorLog    /srv/www/example.com/logs/error.log
    CustomLog   /srv/www/example.com/logs/access.log combined
</VirtualHost>
The only site the differs is the other subdomain:

<VirtualHost *:80>
    ServerAdmin webmaster@example.com
    ServerName  reseller.example.com
    ServerAlias reseller.example.com
    DocumentRoot    /srv/www/reseller.example.com/public_html/
    ErrorLog    /srv/www/reseller.example.com/logs/error.log
    CustomLog   /srv/www/reseller.example.com/logs/access.log combined
</VirtualHost>

Кроме того, убедитесь, что NameVirtualHost устанавливается следующим образом. В моей настройке под Ubuntu вы увидите эту строку в этом файле: /etc/apache2/ports.conf

NameVirtualHost *:80
Listen 80

0
2017-11-16 06:28