Cache do proxy Nginx invalidando a solicitação para s3

1

Eu configurei um proxy do meu servidor de aplicativos para um bucket s3 privado para armazenar solicitações em cache. Eu estava tendo alguns problemas com isso, onde o s3 estava rejeitando minhas solicitações de download (proibido 403) e depois de alguns experimentos, parece que a desativação do cache permite que o pedido válido seja processado. Mas todo o propósito do proxy é como um cache. Eu acho que o proxy está alterando o pedido de alguma forma, mas eu não entendo como. Alguém tem alguma idéia de como ativar o armazenamento em cache no nginx altera as solicitações e se há alguma maneira de superar isso?

Aqui está a configuração relevante.

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;
        }
    }
} 

se eu remover a linha proxy_cache S3_CACHE;

    
por AllTheTime 09.11.2014 / 08:09

1 resposta

0

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

    
por 27.03.2015 / 14:46