Um Squid pode ser usado para isso, no entanto, existem alguns problemas que você deve observar:
-
O Squid ainda não oferece suporte ao armazenamento em cache de conteúdo parcial. Portanto, se o aplicativo usar solicitações de intervalo em vez de fazer o download do arquivo inteiro, você terá alguns problemas. Você pode configurar o Squid para buscar o arquivo inteiro no cache em uma solicitação de intervalo, mas nesse caso ele bloqueará até que o arquivo inteiro seja baixado - se o arquivo de áudio em cache estiver obsoleto e uma nova cópia precisar ser baixada, o aplicativo os usuários terão que esperar que o servidor baixe o arquivo inteiro antes que o aplicativo possa reproduzi-lo.
-
Seu aplicativo deve usar HTTP para buscar os arquivos, caso contrário, você terá erros de certificado se seu proxy tentar interceptar as conexões HTTPS, a menos que você crie um certificado para o proxy e faça o seu aplicativo confiar nele. outra coisa além do seu aplicativo também lançará erros de certificado HTTPS e você não poderá fazer nada a respeito, geralmente interceptar o HTTPS é uma prática ruim, a menos que você deixe claro para seus usuários e faça com que eles instalem um certificado.
Para forçar o tráfego do cliente a passar pelo Squid sem qualquer configuração de sua parte, você precisa configurar o Squid como um proxy transparente e usar alguma mágica de firewall no gateway usado pelos usuários para acessar a Internet para redirecionar todo o tráfego HTTP para seu servidor Squid:
http_port 3128 intercept # enable transparent proxy mode
Quanto à configuração do gateway, depende de qual firewall está lá, para IPtables, algo assim deve funcionar assumindo que seu servidor Squid esteja atrás do mesmo gateway que seus usuários:
iptables -t nat -A PREROUTING -s <squid_server_IP> -p tcp --dport 80 -j ACCEPT # accept HTTP traffic from the Squid
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination <squid_server_IP>:3128 # redirect your user's HTTP traffic to Squid
iptables -t nat -A POSTROUTING -j MASQUERADE # probably not needed since your gateway already has this
Você deve dar uma olhada em documentação do Squid , eles têm alguns exemplos para configurar firewalls entreprise para isso.