У меня есть несколько веб-сайтов, все они созданы в http-vhosts.conf
с их соответствующими ServerName
и DocumentRoot
, они работают нормально и денди.
Но когда я посещаю URL-адрес IP-адреса сервера, я возвращаю файлы в первый виртуальный хост, а не Apache, обслуживающий там, где я ожидал, http.conf
файл DocumentRoot
.
Как я могу настроить Apache так, чтобы посещение сервера по IP-адресу, внешнему или обратному, выполнялось не вернуть первый VirtualHost?
Вот первый VirtualHost, который я сейчас получаю в качестве ответа, если захожу на веб-сервер по IP:
<VirtualHost *:80>
ServerName "delaneatallent.com"
ServerAlias "www.delaneatallent.com"
DocumentRoot "/Library/WebServer/Documents/delanea"
</VirtualHost>
Используя Apache 2.2.14 в OS X, если это важно.
: wq
Короче, нельзя - так работает Apache. Если вы слушаете этот IP-адрес (согласно комментарию Prix), то Apache будет использовать первый виртуальный хост, как определено при обслуживании IP-запроса.
Если это нежелательно, подумайте о том, чтобы изменить первый виртуальный хост на то, что вы действительно хотите обслуживать, если это будет IP. Если это не то, что вы хотите, подумайте о том, чтобы включить перенаправление в качестве первого виртуального хоста, чтобы он пошел туда, куда вы хотите.
# default
<VirtualHost *:80>
RewriteEngine on
RewriteRule ^/(.*) http://othersite.com/$1 [L,R]
</VirtualHost>
Вы не можете запретить Apache прослушивать этот IP-адрес, но вы можете заставить его делать что-то еще, что делает то, что вы хотите, с небольшим творчеством.
Чтобы исправить это, я создал страницу по умолчанию для /var/www
и это обслуживает сайт по умолчанию, который вы видите, когда переходите на мой сервер по IP-адресу или неизвестному URL-адресу, связанному с сайтом на моем сервере.
Фактические сайты, которые я размещаю, находятся в папке с поддержкой сайтов с конфигурацией сайта по умолчанию, все они основаны на имени и указывают на другой каталог.
Короче говоря, перейдите на мой сервер по его IP, вы получите страницу с ошибкой по умолчанию.
Чтобы ваш apache прослушивал определенный IP-адрес и порт, вы должны его определить:
Listen 10.0.0.1:80
Listen 20.0.0.1:80
Где 20.0.0.1 и 10.0.0.1 - это 2 примера ips, которые я ему назначил.
Если у вас уже есть другой Listen
настроен, вам может потребоваться его изменить, например:
Listen 0.0.0.0:80
заставит ваш apache прослушивать все доступные интерфейсы.