使用 url_rewriter 和本地 apache 脚本进行 youtube 缓存时,squid + tproxy 无法正常工作

使用 url_rewriter 和本地 apache 脚本进行 youtube 缓存时,squid + tproxy 无法正常工作

我正在使用 squid 透明代理进行缓存,并且还使用 url_rewrite 和在与 squid 相同的机器上运行的 apache 脚本完成了 youtube 缓存。

一切都运行良好,直到我决定使用 TPROXY,因为它有很多好处。当我在 iptables 中实施 tproxy 规则时,除了播放 YouTube 视频(url_rewriter 和 apache 脚本发挥作用)之外,一切都继续正常工作。url_rewriter 将 YouTube 请求重定向到在 Apache 上运行的本地 .php 脚本(在同一台机器上)

我认为这与 squid 如何与本地 apache 进程(youtube 缓存软件的工作地点)进行通信有关,而 tproxy 以某种方式搞砸了这一切,因为在实施 tproxy 之后,对 Apache 的请求是使用 USER-IP 发送的(以前没有 tproxy,而是使用 SQUID-IP),而来自 apache 脚本的回复可能直接发送给用户,而不是通过 squid 进程返回。

此外,apache 脚本应该能够自由地与真正的 youtube 服务器通信,以从那里获取视频。

以下是我对 tproxy 的规则,但我认为它们非常标准:

iptables -t mangle -N DIVERT 
iptables -t mangle -A DIVERT -j MARK --set-mark 1 
iptables -t mangle -A DIVERT -j ACCEPT 
iptables -t mangle -A PREROUTING -p tcp -m socket -j DIVERT 
iptables -t mangle -A PREROUTING -i eth1 -p tcp --dport 80 -j TPROXY --tproxy-mark 0x1/0x1 --on-port 8081 


echo 1 > /proc/sys/net/ipv4/ip_forward 
ip rule add fwmark 1 lookup 100 
ip route add local 0.0.0.0/0 dev lo table 100 

系统是UBUNTU 12.04,带有squid版本3.1.19。

有谁遇到过同样的问题并最终使用 Squid 选项或 iptables 规则找到了解决办法?

相关内容