Локальный прозрачный прокси-сервер Apache2

У меня есть локальный сервер, на котором запущено стороннее приложение, которое извлекает содержимое веб-сайта (приложение http fetch для наглядности).

Чтобы изменить заголовки исходящих запросов и применить некоторые настраиваемые ACL в будущем, я хочу создать прозрачный прокси-сервер apache2 на моем локальном компьютере, который будет действовать как прокси-сервер.

Затем я могу использовать iptables для маршрутизации всех http-запросов на этот локальный прокси-сервер, который должен затем извлекать веб-сайты от имени приложения fetch (без перенаправления в приложение).

Приведенное ниже правило iptable перенаправляет запросы http-порта 80 на прозрачный прокси-сервер apache2:

sudo iptables -t nat -A OUTPUT -p tcp --dport 80 -j DNAT --to-destination 127.0.0.1:3128

Но как настроить локальный прокси-сервер для прозрачного получения URL-адресов?

Попробовал это, но это заканчивается в цикле перенаправления:

<VirtualHost 127.0.0.1:3128>
    <Proxy *>
            Order deny,allow
            Allow from all
    </Proxy>
    RewriteEngine on
    RewriteRule ^/(.*) http://%{HTTP_HOST}/$1 [NC,R=302,L]
    RewriteRule ^(.*)$ http://%{HTTP_HOST}$1 [NC,P]
    ProxyPass            /  http://$1
    ProxyPassReverse     /  http://$1
</VirtualHost>

1 ответ

Решаемые.

Изменил мои переписывает на:

    RewriteEngine On
    RewriteRule ^(.*)$ http://%{HTTP_HOST}$1 [NC,P]
    ProxyPass            /  http://$1
    ProxyPassReverse     /  http://$1
    ProxyPreserveHost On

И моя команда iptables:

sudo iptables -t nat -A OUTPUT -p tcp --dport 80  -m owner --uid-owner proxy -j DNAT --to-destination <ip>:3128

где proxy - это идентификатор пользователя приложения fetch.

Другие вопросы по тегам