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

Apache2: Как ограничить доступ к определенному IP с помощью ProxyPass?

У меня есть сервер Apache2, настроенный как обратный прокси в моей сети периметра.

Существует множество VirtualHost, настроенных с помощью директивы ProxyPas.

Для конкретного я хочу ограничить доступ к определенному IP-адресу.

Это пример:

<VirtualHost 192.168.0.1:80>
    ServerAdmin email@domain.com
    ServerName sub.domain.com
    ServerAlias sub.domain.com
    ProxyPass / http://internal.domain.com:80/
    ProxyPassReverse / http://internal.domain.com:80/
    CustomLog /var/log/apache2/my_log combined
    HostnameLookups Off
    ProxyPreserveHost On
    UseCanonicalName Off
    ServerSignature On
    ProxyRequests Off
</VirtualHost>

Я пытался добавить это:

<Proxy *>
    Order deny,allow
    Deny from all
    Allow from 192.168.0.100
</Proxy>

но не работает, потому что обратный прокси-сервер не сохраняет удаленный IP-адрес.

Есть ли способ использовать IP ACL с Apache, настроенным как обратный прокси?

Спасибо

Вы можете сделать это, используя: Заголовки запроса обратного прокси (X-Forwarded-For)

Учебное пособие: Apache 2.4 как обратный прокси-сервер - LeaseWeb labs - охватывает второй пункт маркера.

для mod_proxy:

LogFormat "%v %{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" pro
xy
SetEnvIf X-Forwarded-For "^.*\..*\..*\..*" forwarded