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

Как я могу заставить Apache не отвечать на IP-запрос?

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