Estou no processo de reestruturar a pilha da web do meu projeto para: nginx -> haproxy -> muitas instâncias (apache / passenger rails)
Alguns dos objetivos incluem:
- local único para armazenamento em cache de página (atualmente feito via trilhos em cada máquina apache)
- conteúdo estático mais rápido
- remover ssl do pipeline interno
- registro de ip (anteriormente perdido devido à execução de haproxy no modo tcp)
Os recursos de image / stylesheet / javascript são armazenados em cache em cache, com cabeçalhos apropriados. Nosso cache de páginas é baseado em parâmetros internos e não deve responder aos controles de cache típicos. Para atingir esses objetivos, nossa configuração se parece 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 realmente um administrador de sistemas e sei que existem muitas alternativas / ajustes / adições que podem ser úteis. Também não entendo bem a diferença entre proxy_cache e proxy_store. Então, para a minha pergunta real ...
Até movermos os ativos 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 software que eu deva considerar, adoraria ouvir sobre elas. Obrigado!
Desde que postei essa pergunta, percebi que a configuração inicial que eu usei não usa a loja e que a página de erro e as configurações internas do exemplo wiki oficial (semi?) Não eram exatamente opcionais (configuração atualizada aqui desde parece estar funcionando, e uma configuração de trabalho parece ser um legado melhor para esta questão). Portanto, o uso da loja para páginas completas de criação lenta (e raramente atualizadas) e o cache real de imagens, javascript e outros parecem estar funcionando muito bem para nós. Aceitarei a única resposta, uma vez que pelo menos me deu uma pista para localizar meu problema, mas ainda não tenho noção se estou usando ou não as duas diretivas da maneira a que elas se destinam. ou não (bem, pelo menos não em relação à loja, o cache parece um pouco mais óbvio).
Respostas:
Se a memória me servir corretamente, 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 é realmente um mecanismo de armazenamento em cache adequado com vários níveis e é adequado para armazenar conteúdo de vários sites usando as mesmas chaves.
Pessoalmente, uso o proxy_cache para armazenar mais de 2 bilhões de imagens de produtos em cada um de nossos servidores de conteúdo estático.
fonte
proxy_store é usado para criar um espelho de objetos 'sob demanda'. Ele coloca os itens no mesmo caminho em que o item fornecido existe no back-end.
No caso de conteúdo dinâmico lento, proxy_cache é mais apropriado, pois suporta a expiração do cache.
Um exemplo de onde o proxy_store é mais útil pode ser um espelho dos arquivos rpm em que um nome de arquivo / versão nunca precisará expirar .
fonte