No servidor Ubuntu 18.04 executando o Apache 2.4, gostaria de passar todas as solicitações de saída do Apache para um proxy de encaminhamento para que eu possa filtrar alguns URLs por motivos de segurança (usando Tinyproxy ).
Parece que a diretiva ProxyRemote do Apache na minha configuração do Vhost deve fazer isso, então usei o seguinte:
ProxyRequests Off
ProxyRemote * http://localhost:8888
Eu também tentei adicionar variáveis de ambiente ao /etc/environment, assim:
http_proxy="http://localhost:8888/"
https_proxy="http://localhost:8888/"
Posso ver outros aplicativos agora usando o proxy, por exemplo (dos logs do Tinyproxy):
CONNECT Jul 28 17:26:58 [2318]: Request (file descriptor 7): CONNECT api.snapcraft.io:443 HTTP/1.1
CONNECT Jul 28 17:26:58 [2315]: Request (file descriptor 7): CONNECT api.snapcraft.io:443 HTTP/1.1
Mas não apache. Ele ainda passa todas as suas solicitações de saída para as portas 80 e 443 diretamente. Como posso obter o Apache para usar o proxy?
EDIT : Acabei de ver esta pergunta duplicada no Stack Overflow , então suponho que estou tentando fazer a coisa certa. Mas como?
Então eu li os documentos do Apache novamente e pensei no fato de que ele diz
ProxyRemote
" define proxies remotos para este proxy ". Isso implica que o Apache já deve estar fazendo proxy de solicitações e você deseja usar um proxy upstream. Então, pode não ser o que eu quero, afinal.Então, em vez disso, procurei usar variáveis de ambiente, que parecem funcionar mais da maneira que eu queria:
Colocar isso
/etc/apache2/envvars
faz com que a maioria (mas não todos?) dos aplicativos hospedados pelo Apache usem o proxy:E colocar isso em
/etc/environment
, significa que outros aplicativos também passarão pelo proxy se estiverem configurados para usar esses envvars:Vejo que agora as portas de saída 80 e 443 estão passando pelo proxy. Viva.
Atualmente, uso o iptables para forçar a saída de todas as portas 80 via Tinyproxy:
Mas, considerando o que foi dito acima, talvez eu consiga bloquear a porta 443, já que qualquer coisa que não use os envvars provavelmente é desonesto.