Назад | Перейти на главную страницу

Кеш прокси Nginx делает недействительным запрос к s3

Я настроил прокси с моего сервера приложений на частную корзину 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