O Nginx é bom o suficiente para respostas de cache do S3, ele também suporta a invalidação de cache sob demanda, por exemplo:
curl -I 'https://domain/s3/file.jpg' -H 'Cache-Purge: 1'
No caso de proxy de armazenamento em cache, o Nginx não faz a solicitação HTTP subsequente para o S3 se a resposta já estiver no disco (nome do arquivo com base no diretório de proxy + md5 de resposta).
Veja a configuração completa aqui: link