Я настроил прокси с моего сервера приложений на частную корзину s3 для кеширования запросов. У меня были проблемы с тем, что s3 отклонял мои запросы на загрузку (403 запрещено), и после некоторых экспериментов кажется, что отключение кеширования позволяет пройти действительный запрос. Но вся цель прокси - это кэш. Я предполагаю, что прокси каким-то образом изменяет запрос, но я не понимаю, как это сделать. Есть ли у кого-нибудь представление о том, как включение кеширования в nginx изменяет запросы, и есть ли способ преодолеть это?
Вот соответствующий конфиг.
http {
proxy_cache_path /home/cache levels=1:2 keys_zone=S3_CACHE:10m inactive=24h max_size=500m;
proxy_temp_path /home/cache/tmp;
server {
server_name my-cache-server.com;
listen 80;
proxy_cache S3_CACHE;
location / {
proxy_buffering on;
proxy_pass http://MY_BUCKET.s3.amazonaws.com/;
proxy_pass_request_headers on;
}
}
}
если я удалю линию proxy_cache S3_CACHE;
Nginx достаточно хорош для кеширования ответов от S3, он также поддерживает аннулирование кеша по запросу, например:
curl -I 'https://domain/s3/file.jpg' -H 'Cache-Purge: 1'
В случае кеширования прокси-сервера Nginx не выполняет последующий HTTP-запрос к S3, если ответ уже находится на диске (имя файла на основе каталога прокси + md5 ответа).
Смотрите полную конфигурацию здесь: https://gist.github.com/mikhailov/9639593