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

прокси-сервер apache - как переопределить адрес назначения?

Я использую 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 и перекомпилировать его, но это тоже не идеально.