Локальный прозрачный прокси-сервер 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.