VirtualHost не считается лучшим вариантом

VirtualHost не считается лучшим вариантом

У меня есть файл под названием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 Testing по умолчанию. 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>некоторые мои коллеги получили успешные результаты. Эта проблема возникла только у меня.

Что я тут упустил? Почему другие получают ожидаемые результаты, а я нет?

решение1

Вам всегда необходимо определять ServerName в каждом виртуальном хосте.

Так как, вероятно, ваш "default" загружается первым и не имеет определенного имени сервера, он захватывает все запросы. Вы можете легко попробовать это, установив "ServerName default" в виртуальном хосте по умолчанию.

Поэтому, когда вы запрашиваете "http://192.168.1.10:8008"теперь вы попадете на соответствующий виртуальный хост.

Поэтому помните, что лучше всего всегда определять уникальную директиву ServerName для каждого виртуального хоста и учитывать, что если ни одно запрошенное имя хоста не совпадает с определенными виртуальными хостами, запрос примет первый виртуальный хост. Кроме того, если вы случайно определите одно и то же имя сервера для двух виртуальных хостов, запрос примет первый загруженный виртуальный хост.

Связанный контент