У меня проблема с определением правильной конфигурации виртуальных хостов Apache2 на сервере Centos6. У меня чистая установка Centos6 с установленным apache2 (httpd), и по умолчанию / var / www / html, / var / www / icons, / var / www / errors и / var / www / cgi-bin определены папки содержимого, настроенные в /etc/httpd/conf/httpd.conf.
У меня 2 домена a.com и b.com настроил, для чего создал папки с документами /var/www/a.com и /var/www/b.com, а в /etc/httpd/conf/httpd.conf Я настроил NameVirtualHost
NameVirtualHost *:80
и добавил соответствующие виртуальные хосты для a.com и b.com лайк
<VirtualHost *:80>
ServerAdmin admin@a.com
ServerName a.com
ServerAlias www.a.com
DocumentRoot /var/www/a.com
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory "/var/www/a.com">
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Оба домена a.com и b.com работают нормально, и я могу получить к ним доступ с или без www поддомен, но я не понимаю, что мне делать с конфигурацией httpd по умолчанию и папками содержимого по умолчанию? Похоже, я не могу получить доступ к сайту по умолчанию в / var / www / html даже при вызове сервера с простым IP-адресом (запрос направляется на a.com виртуальный хост). Я также попытался настроить имя хоста сервера как c.com и установите
ServerName c.com:80
Но даже просьба к c.com перенаправляется на a.com виртуальный хост.
Мне не нужны папки содержимого по умолчанию, созданные apache, поэтому я должен просто удалить / var / www / html, / var / www / icons, / var / www / errors и / var / www / cgi-bin папки и соответствующие определения на /etc/httpd/conf/httpd.conf то есть
DocumentRoot "/var/www/html"
<Directory "/var/www/html" ... />
Alias /icons/ "/var/www/icons/"
<Directory "/var/www/icons" ... />
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
<Directory "/var/www/cgi-bin" ... />
Alias /error/ "/var/www/error/"
<Directory "/var/www/error" ... />
Или как следует настроить хост по умолчанию и получить к нему доступ, если виртуальные хосты настроены на одном сервере?
Когда вы используете виртуальный хостинг на основе имени, первый <VirtualHost>
становится хостом по умолчанию, который также будет отвечать на все запросы, не соответствующие доменным именам, объявленным в ServerName
или ServerAlias
директивы другого виртуального хоста.
Из руководство:
Главный хозяин уходит
Если вы добавляете виртуальные хосты в существующий веб-сервер, вы также должны создать<VirtualHost>
блок для существующего хоста. ServerName и DocumentRoot, включенные в этот виртуальный хост, должны быть такими же, как глобальные ServerName и DocumentRoot. Сначала укажите этот виртуальный хост в файле конфигурации, чтобы он действовал как хост по умолчанию.