У меня есть сайт, расположенный в / var / www / html /, который отлично работает.
Сейчас я пытаюсь настроить "blog.example.com", добавив следующую запись в httpd.conf
Setup1
<VirtualHost *:80>
DocumentRoot /var/www/html/blog
ServerName blog.example.com
</VirtualHost>
НО теперь основной сайт перестает работать и ничего не доступно по адресу: http://blog.example.com либо
root@server [~]# apachectl configtest
Syntax OK
Я пробовал следующее, но это тоже не сработало
Setup2
NameVirtualHost *:80
<VirtualHost *:80>
ServerName blog.example.com
DocumentRoot /var/www/html/blog
</VirtualHost>
(Это связано с https://serverfault.com/questions/209945/setting-up-blog-at-blog-example-com-httpd-conf-issue)
Сайт работает от имени пользователя apache в системе RedHat / CentOS.
Я тоже попробовал следующее, но безуспешно
Setup3
NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot /var/www/html
ServerName www.example.com
</VirtualHost>
<VirtualHost *:80>
ServerName blog.example.com
DocumentRoot /var/www/html/blog
</VirtualHost>
Это было лучше, потому что я мог получить доступ к сайту, но ссылка blog.example.com все еще не работала.
Настройка5
NameVirtualHost *:80
<VirtualHost *:80>
ServerName www.example.com
DocumentRoot /var/www/html
</VirtualHost>
<VirtualHost *:80>
ServerName blog.example.com
DocumentRoot /var/www/html/blog
<Directory /var/www/html/blog/>
Options None
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Настройка6
NameVirtualHost *:80
<VirtualHost *:80>
ServerName www.example.com
DocumentRoot /var/www/html
</VirtualHost>
<VirtualHost *:80>
ServerName blog.example.com
DocumentRoot /var/www/html-blog
</VirtualHost>
В обоих случаях nslookup показывает следующее:
root@server [/etc/httpd/conf]# nslookup
> example.com
Server: 67.99.9.90
Address: 67.99.9.90#53
Non-authoritative answer:
Name: example.com
Address: 174.999.99.99
> blog.example.com
Server: 67.99.9.90
Address: 67.99.9.90#53
** server can't find blog.example.com: NXDOMAIN
Первый вопрос: как вы определяете «нефункциональный»? Вы получаете сообщение об ошибке с сервера? (В чем ошибка?)
Вы получаете главную страницу, а не страницу блога? (Что-то может быть сломано в конфигурации Named VirtualHosts)
Вы вообще не подключаетесь? (Проблема с DNS? Что-нибудь отображается в журналах Apache?)
Несколько мыслей ... A) вы можете попробовать явно добавить директиву Directory для блога в поддерево и посмотреть, имеет ли это значение.
<Directory /var/www/html/blog/>
AllowOverride None
Order allow,deny
Allow from all
</Directory>
A) Что произойдет, если вы переместите дерево блога в его структуру каталогов, скажем, / var / www / html-blog, и обновите свой httpd.conf, чтобы отразить его ...
<VirtualHost *:80>
ServerName blog.example.com
DocumentRoot /var/www/html-blog
<Directory /var/www/html-blog/>
Options None
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Вы должны проверить документацию Apache на Поддержка виртуальных хостов на основе имен так что вы можете прочитать следующее:
Главный хозяин уходит
Если вы добавляете виртуальные хосты к существующему веб-серверу, вы также должны создать блок для существующего хоста. ServerName и DocumentRoot, включенные в этот виртуальный хост, должны быть такими же, как глобальные ServerName и DocumentRoot. Сначала укажите этот виртуальный хост в файле конфигурации, чтобы он действовал как хост по умолчанию.
Следовательно, основной сайт снова в сети, и мы должны предположить, что на стороне Apache все работает. Похоже, мы не имеем дело с проблемой, касающейся HTTP / 1.1 VHosts (виртуальные хосты на основе имен), поскольку те же функции используются как для основного сайта, так и для блога.
Теперь посмотрим, почему не работает blog.example.com. Вы должны проверить DNS-запись blog.example.com, поскольку она должна указывать на тот же адрес, что и example.com.
$ nslookup
> example.com
[...]
> blog.example.com
[...]
> quit
Что касается того, что это nslookup
не вернул результат для поддомена, проблема объясняется. Запрос на blog.example.com никогда не достигает вашего веб-сервера apache, потому что DNS-сервер не знает, что с ним делать. blog.example.com
.
Итак, что касается того, что мы видим и знаем, ваша конфигурация apache кажется правильной. Главная страница снова в сети после того, как мы добавили ее VirtualHost. Итак, поскольку я верю, что вы сделали это правильно blog.
слишком.
То, что следует далее, зависит от DNS-провайдера домена. Проще всего было бы поместить поддомен с подстановочными знаками на example.com для перенаправления на ваш веб-сервер. Это перенаправит любой запрос на ANYTHING.example.com
на ваш веб-сервер, который обрабатывает все остальное с помощью VirtualHosts, настроенных вами в apache.
Помните, что DNS-серверу требуется некоторое время, прежде чем их кеши обновятся. Так что эти изменения могут занять некоторое время.
В основной конфигурации http есть ли у вас строка:
ИмяVirtualHost *
раскомментировал? Остальные виртуальные хосты работать не будут.