Я только что попробовал это на сервере nginx, который я сижу перед бэкэндом Apache.
curl -H "Content-Encoding: gzip" --include -d @testfile.gz http://example.com/upload_file.php
curl автоматически добавляется:
Expect: 100-continue
к заголовкам запроса.
nginx отправил обратно
HTTP/1.1 100 Continue
ответ и скручивание сопровождались отправкой данных в формате gzip. nginx передал всю партию обратно в Apache, все еще сжатый и с Content-Encoding:
неповрежденным заголовком.
Если я не добавил Content-Encoding: gzip
заголовок с помощью curl, я не получил ответ HTTP 100, но все остальное было таким же.
Это еще не отвечает на ваш вопрос, но подразумевает, что nginx либо не обрабатывает это по умолчанию, либо не распаковывает тело запроса при прокси. Я заинтересован в ответе на этот вопрос, так что я посмотрю, смогу ли я опробовать его на не проксирующем сервере nginx чуть позже.
Предположительно, вы могли бы решить проблему пропускной способности, передав эти запросы в серверную часть Apache с помощью mod_deflate, но это игнорирует причину, по которой вы выбрали nginx.