У меня есть файл под названием pga-default.conf что похоже,
<VirtualHost *:8008>
ServerName 192.168.1.10
DocumentRoot /var/www/portals/default/public
<Directory "/var/www/portals/default/public">
AllowOverride All
</Directory>
ErrorLog /var/log/httpd/default.error.log
CustomLog /var/log/httpd/default.requests.log combined
</VirtualHost>
Проблема в том, что когда я пытаюсь использовать http://192.168.1.10:8008 он всегда загружает страницу тестирования Apache по умолчанию. default.conf выглядит как,
Listen 8008
<VirtualHost _default_:8008>
DocumentRoot "/www/default"
</VirtualHost>
Но когда я меняю <VirtualHost *:8008>
в <VirtualHost 192.168.1.10:8008>
в pga-default.conf он работает как положено. Я хочу знать, почему это так. Насколько мне известно, это связано с тем, что сервер не выбирает VirtualHost как наиболее подходящий для конкретного IP-адреса и порта. (Этот ответ подтверждает, что разница между _default _: * и *: * в контексте VirtualHost)
Я пробовал и несколько других методов, но ни один из них не сработал, кроме вышеупомянутого. Ниже приведены другие методы. (Изменения для pga-default.conf)
ServerName 192.168.1.10
к ServerName 192.168.1.10:8008
ServerAlias 192.168.1.10
Заметка - С указанной выше конфигурацией <VirtualHost *:8008>
некоторые из моих коллег получили успешные результаты. Эта проблема возникла только у меня.
Что я здесь пропустил? Почему другие получают ожидаемые результаты, а я нет?
Вы всегда должны определять ServerName в каждом виртуальном хосте.
Поскольку, вероятно, ваш "default" загружается первым и не имеет определенного имени сервера, он захватывает все запросы. Вы можете легко попробовать это, установив "ServerName default" в виртуальном хосте по умолчанию.
Итак, когда вы запросите "http://192.168.1.10:8008"теперь вы попадете на соответствующий виртуальный хост.
Итак, помните, что лучше всего всегда определять уникальную директиву ServerName в каждом виртуальном хосте и учитывать, когда ни одно запрошенное имя хоста не соответствует определенным виртуальным хостам, первый виртуальный хост примет запрос, а также, если вы сначала случайно определите одно и то же имя сервера в двух виртуальных хостах. загруженный виртуальный хост примет запрос.