我有一个本地服务器运行一个第三方应用程序,该应用程序获取网站内容(用于描述目的的http fetch应用程序)。
为了修改传出请求标头并在将来应用一些自定义 ACL,我想在我的本地机器上创建一个 apache2 透明代理,它将充当代理。
然后,我可以使用 iptables 将所有 http 请求路由到此本地代理,然后该代理应代表 fetch-application 获取网站(无需向应用程序发出重定向)。
下面的 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>
已解决。
将我的重写更改为:
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
其中代理是获取应用程序的用户 ID。