Apache2本地透明代理

时间:2014-12-30 10:26:29

标签: apache mod-rewrite proxy iptables transparentproxy

我有一台本地服务器运行第三方应用程序,该应用程序提取网站内容(用于描述目的的http获取应用程序)。

为了修改传出请求标头并在将来应用一些自定义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

但是现在如何配置本地代理以透明地获取网址?

尝试了这一点,但最终导致重定向循环:

<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 个答案:

答案 0 :(得分: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-application的用户ID。

相关问题