Eu corri através disso eu mesmo. Nenhuma combinação de INFLATE, DEFLATE e meu filtro personalizado funcionaria. Parecia sempre executar o gzip DEFLATE antes de passar para o filtro do meu cliente.
Estou usando o Apache 2.2.2. Então, essencialmente, quando uma resposta codificada por gzip foi recebida (modo de proxy reverso) e passada para o meu filtro personalizado phpFilter
:
ExtFilterDefine phpFilter mode=output \
cmd="/path/my_php_filter.php"
Isso funciona muito bem (recebo boas coisas descompactadas, independentemente do tipo de conteúdo):
SetOutputFilter INFLATE;DEFLATE
Isso também funciona (vejo coisas compactadas agradáveis ou coisas boas não compactadas para respostas não-gzip como JSON ou HTML):
SetOutputFilter phpFilter
Mas isso não funciona! o STDIN para o meu script php sempre seria distorcido quando o Content-Type era gzip.
SetOutputFilter INFLATE;phpFilter;DEFLATE
Depois de uma tonelada de googling e um pouco de sorte, isso acabou funcionando para mim. Eu não sei porque é necessário, mas adicionar proxy-html na cadeia de filtros parece forçar meu filtro personalizado a executar antes DEFLATE.
SetOutputFilter INFLATE;phpFilter;proxy-html;DEFLATE
Eu sei que estou respondendo a essa questão 2 anos tarde demais, mas espero que isso economize um dia ou dois de dor de cabeça para a próxima pessoa.