Eu apenas tentei isso em um servidor nginx que estou sentado na frente de um backend do Apache.
curl -H "Content-Encoding: gzip" --include -d @testfile.gz http://example.com/upload_file.php
curl adicionado automaticamente:
Expect: 100-continue
para os cabeçalhos de solicitação.
nginx enviou de volta um
HTTP/1.1 100 Continue
resposta e curl seguidas enviando os dados gzipados. O nginx passou o lote inteiro de volta ao Apache, ainda compactado e ainda com o cabeçalho Content-Encoding:
intacto.
Se eu não adicionasse o cabeçalho Content-Encoding: gzip
com curl, não obtive a resposta HTTP 100, mas tudo o mais foi o mesmo.
Isso não responde à sua pergunta ainda, mas implica que o nginx não lida com isso por padrão ou não descompacta o corpo da solicitação quando está fazendo proxy. Estou interessado na resposta a esta pergunta, para ver se posso testá-la em um servidor nginx sem proxies um pouco mais tarde.
Presumivelmente, você poderia resolver o problema de largura de banda fazendo proxy dessas solicitações para um backend do Apache com o mod_deflate, mas isso ignora o motivo pelo qual você escolheu o nginx em primeiro lugar.