Definir o Nginx expira o cabeçalho da época seletivamente

Definir o Nginx expira o cabeçalho da época seletivamente

Eu tenho uma pasta contendo imagens em meu servidor que é usada para atender um aplicativo móvel, por meio de um CDN, e para trabalhar com um webapp de back-end usado para gerenciar o conteúdo entregue ao aplicativo. Para este último - o webapp backend - quero garantir que as imagens entregues da pasta em questão não sejam armazenadas em cache pelo navegador para que eu possa mostrar versões atualizadas no aplicativo backend assim que forem atualizadas pelo autor. O CDN extrai as mesmas imagens para entrega no aplicativo móvel e tem suas configurações de atualização em 30 minutos para não entregar imagens de conteúdo desatualizadas.

Minha pergunta - como posso configurar o Nginx para que ele injete o expires epochcabeçalho apenas para solicitações originadas do webapp. Parte da resposta a esta pergunta está emeste tópico SO. Existe uma maneira de modificar a solução proposta para examinar o referenciador antes de injetar o cabeçalho? Assim, por exemplo, todas as solicitações provenientes de https://example.com/backofficesão respondidas com o expires epochcabeçalho, enquanto outras - por exemplo, aquelas provenientes de solicitações pull de CDN - não o são.

Responder1

Um simples ifdeve ser suficiente aqui:

server {

    location ... {

        if ($http_referer ~* ^https://example.com/backoffice) {
            expires epoch;
        }

    }

}

Tenha em mente que em geral évastamenteÉ preferível que seu aplicativo da Web tome decisões de armazenamento em cache e responda com as diretivas apropriadas.

informação relacionada