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

Блокировать прямые IP-подключения к веб-серверу Apache

Мне нужно выяснить, как заблокировать прямой IP-доступ к моему сайту.

Пример: я хочу, чтобы когда люди вводили мой IP-адрес 1.2.3.4 в браузер это не работает, но когда они набирают www.example.com это действительно работает.

Я использую Apache 2.4.9, а мой веб-сайт работает с использованием WampServer.

Я пробовал другие решения из некоторых старых вопросов здесь, но ни одно из них не сработало для меня. Я пробовал вставлять информацию о виртуальном хосте в vhosts.conf, но у меня ничего не получилось, и я попытался переписать материал с помощью файла htaccess, но это тоже не сработало.

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

Один из способов сделать это - установить условие перезаписи в глобальном контексте сервера, которое запрещает запросы на основе IP, требуя заголовок HTTP, аналогичный показанному ниже примеру:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.example\.com [NC]
RewriteCond %{REQUEST_URI} !^/error [NC]
RewriteRule ^.(.*) - [L,F]

ПРИМЕЧАНИЕ. В этом примере необходимо включить mod_rewrite.

ПРИМЕЧАНИЕ ТАКЖЕ: если у вас несколько виртуальных хостов, вы можете изменить RewriteCond чтобы проверить более широко или использовать несколько RewriteCond заявления для размещения различных доменов.

Альтернативная конфигурация:

<If req('Host') != 'www.example.com'">
  <Location "/">
    Require all denied
  </Location>
</If>