nginx proxy reverso, quando usar cache vs store?

8

Estou no processo de reestruturar a pilha da Web do meu projeto para:  nginx - > haproxy - > muitos casos (trilhos de apache / passageiro)

Alguns dos objetivos incluem:

  • local único para o armazenamento em cache da página (feito atualmente via trilhos em cada máquina do apache)
  • conteúdo estático mais rápido
  • remove ssl do pipeline interno
  • Logging de
  • ip (anteriormente perdido devido a execução do haproxy no modo tcp)

Os recursos image / stylesheet / javascript são armazenados em cache, com cabeçalhos apropriados. Nosso caching de página é baseado em parâmetros internos e não deve responder aos controles de cache típicos. Para alcançar esses objetivos, nossa configuração é parecida com

server {

    ...

    location /really_slow_dynamic_content/ {
        root /var/www/tmp;
        error_page 404 = @fetch;
    }

    location @fetch {
        internal;
        proxy_pass   haproxy_ip;
        proxy_store  /var/www/tmp${uri}_cache.html;
        proxy_store_access  user:rw  group:rw  all:r;
    }

    location /assets/ {
        proxy_pass   haproxy_ip;
        proxy_cache  assets;
    }

    location / {
        proxy_pass   haproxy_ip;
    }
}

Eu não sou muito de um administrador de sistemas, e sei que existem muitas alternativas / ajustes / adições que podem ser úteis. Eu também não entendo muito bem a diferença entre proxy_cache e proxy_store. Então, para minha pergunta real ...

Até que movamos os recursos para a máquina nginx, faz sentido usar proxy_cache para ativos e proxy_store para conteúdo dinâmico lento?

Além disso, se houver outras considerações ou softwares que eu deva considerar, adoraria ouvir sobre eles. Obrigada!

Desde que postamos essa pergunta, percebi que a configuração inicial que eu usei não usa a loja, e que a configuração da error_page e interna da (semi?) exemplo de wiki oficial não eram exatamente opcionais (config atualizado aqui já que parece estar funcionando, e uma configuração funcional parece como um melhor legado para esta questão). Então, usando a loja para lento para criar (e raramente atualizado) páginas inteiras, e o cache real de imagens, javascript e tal parece estar funcionando muito bem para nós. Aceito a única resposta, pois pelo menos me deu uma pista para rastrear meu problema, mas ainda não tenho a impressão de estar ou não usando as duas diretivas de uma maneira para a qual elas se destinam ou não (bem, pelo menos não em relação à loja, o cache parece um pouco mais óbvio).

    
por Chris 29.10.2010 / 19:05

2 respostas

3

Se a memória me atende corretamente, o proxy_store armazena uma representação binária de uma solicitação para um item, enquanto proxy_cache armazena uma cópia em cache do item em seu formulário base.

proxy_cache é na verdade um mecanismo de cache adequado com vários níveis e é adequado para armazenar conteúdo de vários sites usando as mesmas chaves.

Eu pessoalmente uso proxy_cache para armazenar mais de 2 bilhões de imagens de produtos em cada um dos nossos servidores de conteúdo estático.

    
por 24.11.2010 / 20:41
1

proxy_store é usado para criar um espelho 'on demand' de objetos. Ele coloca itens no mesmo caminho em que o item fornecido existe no backend.

No caso de conteúdo dinâmico lento, proxy_cache é mais apropriado, pois suporta a expiração do cache.

Um exemplo de onde proxy_store é mais útil pode ser um espelho de arquivos rpm, em que um nome de arquivo / versão nunca precisará ser expirado .

    
por 26.11.2012 / 08:10

Tags