Вы можете установить условный обратный прокси-сервер в 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
- Первый
RewriteRule
применяется и проксируется, только если предыдущий
Директива RewriteCond
совпадает, т.е. если удаленный IP
Адрес 50.12.95.78.
- Флаг [P] roxy также запрещает применение дополнительных директив
RewriteRule
.
- Переменная среды proxy_pass_path установлена, чтобы сообщить директиве
ProxyPathReverse
, что путь был изменен.
- Второй
RewriteRule
автоматически применяется, если первый не оценил.
- Наконец,
ProxyPathReverse
директива изменена, чтобы переписать заголовки ответа
основано на переменной proxy_pass_path .
Выходя за рамки вашего вопроса, имейте в виду, что этот тип прокси не будет реализовывать никакой реальной формы безопасности. IP-адреса, отличные от 50.12.95.78, по-прежнему смогут получить доступ к http://192.168.1.100/quote
, просто запросив http://<Proxy_Host>/quote
.