Условный обратный прокси в apache - PullRequest
0 голосов
/ 16 мая 2018

если запрос приходит с публичного ip 50.12.95.78.Proxypass к http://192.168.1.100/quote url.

, если запрос приходит от другого публичного ip.Proxypass для http://192.168.1.100/ url

Какие настройки для него в apache?Обратный прокси не будет работать, если условие.

1 Ответ

0 голосов
/ 12 сентября 2018

Вы можете установить условный обратный прокси-сервер в Apache httpd, используя mod_proxy и mod_rewrite.

Например, если у вас изначально был настроен обратный прокси со следующей конфигурацией:

ProxyPass        / http://192.168.1.100/
ProxyPassReverse / http://192.168.1.100/

Это можно сделать условным с помощью прокси-флага в RewriteRule . Пример конфигурации может выглядеть следующим образом:

RewriteEngine On
ProxyPassInterpolateEnv On
RewriteCond "%{REMOTE_ADDR}" =50.12.95.78
RewriteRule (.*) http://192.168.1.100/quote$1 [P,E=proxy_pass_path:/quote]
RewriteRule (.*) http://192.168.1.100$1 [P]
ProxyPassReverse / http://192.168.1.100${proxy_pass_path}/ interpolate
  1. Первый RewriteRule применяется и проксируется, только если предыдущий Директива RewriteCond совпадает, т.е. если удаленный IP Адрес 50.12.95.78.
    • Флаг [P] roxy также запрещает применение дополнительных директив RewriteRule.
    • Переменная среды proxy_pass_path установлена, чтобы сообщить директиве ProxyPathReverse, что путь был изменен.
  2. Второй RewriteRule автоматически применяется, если первый не оценил.
  3. Наконец, ProxyPathReverse директива изменена, чтобы переписать заголовки ответа основано на переменной proxy_pass_path .

Выходя за рамки вашего вопроса, имейте в виду, что этот тип прокси не будет реализовывать никакой реальной формы безопасности. IP-адреса, отличные от 50.12.95.78, по-прежнему смогут получить доступ к http://192.168.1.100/quote, просто запросив http://<Proxy_Host>/quote.

...