Назад | Перейти на главную страницу

Правильная настройка виртуальных хостов на Apache?

У меня проблема с определением правильной конфигурации виртуальных хостов 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. Сначала укажите этот виртуальный хост в файле конфигурации, чтобы он действовал как хост по умолчанию.