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

NameVirtualHost не работает: загружает только хост по умолчанию

Я настроил Apache 2.2 так, чтобы у меня было 2 хоста. Проблема в том, что когда я подключаюсь через второй хост, загружается тот, который используется по умолчанию.

Это файл vhosts.conf:

NameVirtualHost *:80

<VirtualHost *:80>
    ServerAdmin support@desytec.com
    DocumentRoot /var/www/proyectos/mutual/contratos/web
    ServerName contratos.mutual.dev
    ErrorLog /etc/httpd/logs/mutual-contratos-error_log
    <Directory "/var/www/proyectos/mutual/contratos/web">
       Options FollowSymLinks
       AllowOverride All
       Order allow,deny
       Allow from all
    </Directory>
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin support@desytec.com
    DocumentRoot /var/www/proyectos/spensiones/html
    ServerName biotempo.spensiones.dev
    ErrorLog /etc/httpd/logs/biotempo.spensiones.dev-error_log
    <Directory "/var/www/proyectos/spensiones/html">
       Options FollowSymLinks
       AllowOverride All
       Order allow,deny
       Allow from all
    </Directory>
</VirtualHost>

И это результат команды "httpd -S":

[root@orahost conf.d]# httpd -S
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
_default_:443          localhost.localdomain (/etc/httpd/conf.d/ssl.conf:81)
*:80                   is a NameVirtualHost
         default server contratos.mutual.dev (/etc/httpd/conf.d/vhosts.conf:3)
         port 80 namevhost contratos.mutual.dev (/etc/httpd/conf.d/vhosts.conf:3)
         port 80 namevhost biotempo.spensiones.dev (/etc/httpd/conf.d/vhosts.conf:16)
Syntax OK
[root@orahost conf.d]# 

Для проверки с удаленного компьютера я пытаюсь загрузить biotempo.spensiones.dev, но отображается сервер по умолчанию.

Любая помощь, пожалуйста?

Вы можете попробовать ниже. Я решил проблему, указав ниже в httpd.conf.

NameVirtualHost Server_IP_Address:80

<VirtualHost Server_IP_Address:80>

........

</VirtualHost>

Сообщите нам, если у вас по-прежнему возникают проблемы.

РЕДАКТИРОВАТЬ: ПРИМЕЧАНИЕ

Звездочки * соответствуют всем адресам, поэтому главный сервер не обслуживает запросы. В связи с тем, что виртуальный хост с ServerName Contratos.mutual.dev стоит первым в файле конфигурации, он имеет наивысший приоритет и может рассматриваться как сервер по умолчанию или как основной сервер. Это означает, что если получен запрос, который не соответствует одной из указанных директив ServerName, он будет обработан первым.

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

Вы можете заменить * конкретным IP-адресом в системе. Такие виртуальные хосты будут использоваться только для HTTP-запросов, полученных при подключении к указанному IP-адресу. Тем не менее, дополнительно полезно использовать * в системах, где IP-адрес непредсказуем - например, если у вас есть динамический IP-адрес у вашего интернет-провайдера, и вы используете несколько различных решений динамического DNS. Поскольку * соответствует любому IP-адресу, эта конфигурация будет работать без изменений при каждом изменении вашего IP-адреса.