Подтвердить что ты не робот

Apache: ограничение доступа к конкретному IP-адресу источника внутри виртуального хоста

У меня есть несколько виртуальных хостов на одном сервере apache, для одного из виртуальных хостов мне нужно обеспечить доступ только к определенному набору IP-адресов.

Пожалуйста, предложите лучший способ сделать это. Я посмотрел модуль mod_authz_hosts, но не похоже, что я могу сделать это внутри виртуального хоста.

4b9b3361

Ответ 1

Директивы mod_authz_host должны находиться внутри блока <Location> или <Directory>, но я использовал первое в <VirtualHost> следующим образом:

<VirtualHost *:8080>
    <Location />
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1
    </Location>

    ...
</VirtualHost>

Ссылка: https://askubuntu.com/questions/262981/how-to-install-mod-authz-host-in-apache

Ответ 2

Для Apache 2.4 вы должны использовать Требовать директиву IP. Таким образом, разрешить только компьютеры из сети 192.168.0. *

<VirtualHost *:80>
    <Location />
      Require ip 192.168.0
    </Location>
    ...
</VirtualHost>

И если вы просто хотите, чтобы локальная машина имела доступ, адрес сетевого интерфейса 127.0.0.1 для IPv4 или ::1 для IPv6

<VirtualHost *:80>
    <Location />
      Require ip ::1
    </Location>
    ...
</VirtualHost>

Ответ 3

Если вы используете apache 2.2 внутри своего виртуального хоста, вы должны добавить следующую директиву (mod_authz_host):

Order deny,allow
Deny from all
Allow from 10.0.0.1

Вы даже можете указать подсеть

Allow from 10.0.0

Apache 2.4 выглядит немного иначе как конфигурация. Возможно, вам лучше указать, какую версию apache вы используете.

Ответ 4

В Apache 2.4 синтаксис конфигурации авторизации изменился, и директивы Order, Deny или Allow больше не должны использоваться.

Новый способ сделать это:

<VirtualHost *:8080>
    <Location />
        Require ip 192.168.1.0
    </Location>
    ...
</VirtualHost>

Другие примеры с использованием нового синтаксиса можно найти в документации Apache: Обновление до 2.4 из 2.2