У меня есть 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
file У меня 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. префикс.
Я следил этот совет, но по-прежнему не может получить доступ к субдомену должным образом.
Решения других плакатов сделают это.
Отображается сообщение «Это работает», потому что весь ваш виртуальный хост соответствует localhost. И если вы вызовете client1.example.com, apache пропустит Vhosts локального хоста, а если нет подходящего Vhost, он будет использовать конфигурацию по умолчанию.
Сделайте то, что сказали другие плакаты (измените своих основных хозяев на <VirtualHost *:80>
из <VirtualHost *>
или изменить ваш виртуальный хост по умолчанию на корень документа, который вам нравится.
Не забывайте: даже если вы правильно определите свои Vhosts, сервер вызовет сайт по умолчанию, если кто-то запросит ваш сервер без имени хоста (например, через IP-адрес).
У меня возникла точно такая же проблема, и, в конце концов, проблема была решена, когда я отключил сайт по умолчанию в apache, отключив его от сайтов с поддержкой:
sudo unlink /etc/apache2/sites-enabled/000-default
После этого все мои сайты отображались правильно. Я вижу, что этот вопрос довольно старый, но надеюсь, что это поможет кому-то еще.
Попробуйте, не имея повторяющихся записей в 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>
Некоторые предложения:
<VirtualHost 127.0.0.1:80>
для <VirtualHost *:80>
NameVirtualHost *:80
конфигурация?Вы проверили разрешение DNS своих сайтов?
(www.) sub.example.com оба разрешаются на один и тот же компьютер (даже если разные адреса)?
Проверьте журналы, оба, чтобы увидеть, все ли ваши права доступа попадают на правильный сервер (конфигурация), или они попадают в настройки по умолчанию, так как "Это работает!" - это страница по умолчанию для конфигурации по умолчанию.
Если они достигают значения по умолчанию, вы должны определить, почему это так ... каковы различия между конфигурациями. Попробуйте изменить IP-адрес, как предлагалось ранее, поскольку Apache привяжет конфигурацию к конкретному IP-адресу, указанному в директиве VirtualHost.
Ваши конфигурации неправильно настроены для 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