Я использую apache в качестве прямого прокси-сервера для внедрения заголовков, манипулирования URL-адресами и ведения журнала запросов для некоторых приложений Android, и мне нужно будет переопределить пункт назначения для некоторых запросов.
Например, www.example.com
будет иметь IP-адрес 1.2.3.4
но мне нужно перенаправить трафик на 4.3.2.1
без изменения приложения или воздействия на другие приложения, работающие на сервере Apache.
Мне также понадобится гибкость, чтобы переопределить адрес в разных условиях, что означает, что манипулирование /etc/hosts
не вариант.
Клиенты - это приложения, работающие на эмуляторах Android, которые настроены на использование экземпляров прокси-сервера apache, запущенных на хост-машине.
Пока что у меня такая настройка:
## conf.d/proxy_a.conf
## proxy_b.conf, proxy_c.conf listen on different ports with different mappings / headers
Listen localhost:16002
<VirtualHost localhost:16002>
ProxyRequests On
ProxyPreserveHost On
RewriteEngine On
<Proxy "http://www.example.com/*">
Order deny,allow
Deny from all
Allow from localhost
RequestHeader set host "www.example.com"
RewriteRule ^/?(.*) http://4.3.2.1/$1 [NE]
</Proxy>
<Proxy *>
Order deny,allow
Deny from all
Allow from localhost
</Proxy>
## also tried, doesn't work
#RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
#RewriteRule ^/?(.*) http://4.3.2.1/$1 [NE]
RequestHeader set x-custom-header "abcdefgh"
RequestHeader merge user-agent "proxy16002"
</VirtualHost>
Я знаю, что функции, которые я ищу, легко достижимы с помощью обратного прокси, но я ищу решение с использованием прямого прокси (нет необходимости изменять /etc/hosts
или приложения).
Чего не хватает? Возможно ли это даже с apache (2.2)?
Возможно, это не то, что вам нужно, но вы можете настроить другой прокси-сервер Apache, например, на виртуальной машине, и изменить там файл / etc / hosts. Затем трафик будет проходить через два прокси - один, за которым вы сейчас следите, другой, который вы настроили на виртуальной машине. Не идеальный, я знаю, но возможное решение, если никто не придумает что-то лучшее.
В качестве альтернативы вы можете изменить исходный код Apache и перекомпилировать его, но это тоже не идеально.