Habilitar cache de proxy apenas para conteúdo de mídia no Nextcloud
Olá, sou um inútil.
Meu hobby é ouvir música.
Eu cancelei todos os serviços de assinatura e 'cozinhei' toda a minha música, mas se há uma reclamação sobre o Nextcloud, é que o carregamento é lento.
Ambiente
Servidor doméstico Apache: Onde o Nextcloud está localizado
VPS nginx: Servidor de proxy reverso e cache
Como o conteúdo em si é acessado no servidor principal a cada vez, o que contribui para a carga do próprio servidor, decidi revisar o cache de proxy no lado do VPS, que também atua como proxy reverso, para melhorar isso.
Vou escrever rapidamente a sintaxe do nginx.conf.
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://192.168.10.101/;
}
location /remote.php/dav/ {
# Caching
proxy_cache zone2;
add_header X-Cache-Status $upstream_cache_status; # debug
proxy_cache_valid 200 90d;
proxy_pass http://192.168.10.101/remote.php/dav/;
proxy_ignore_headers Cache-Control Expires;
proxy_hide_header Cache-Control;
proxy_hide_header Pragma;
}
location /remote.php/webdav/ {
proxy_cache zone2;
add_header X-Cache-Status $upstream_cache_status; # debug
proxy_cache_valid 200 90d;
proxy_pass http://192.168.10.101/remote.php/webdav/;
proxy_ignore_headers Cache-Control Expires;
proxy_hide_header Cache-Control;
proxy_hide_header Pragma;
}
location /index.php/apps/music/api/file/ {
proxy_cache zone2;
add_header X-Cache-Status $upstream_cache_status; # debug
proxy_cache_valid 200 90d;
proxy_pass http://192.168.10.101/index.php/apps/music/api/file/;
proxy_ignore_headers Cache-Control Expires;
proxy_hide_header Cache-Control;
proxy_hide_header Pragma;
}
Na verdade,
proxy_ignore_headers Cache-Control Expires;
proxy_hide_header Cache-Control;
Não sei se faz sentido chamar Cache-Control duas vezes aqui, mas por enquanto, funcionou bem.

Além disso, para **/index.php/apps/music/api/file/**, eu instalei um plugin de reprodução de música, e provavelmente o próprio plugin chama a API do Nextcloud, o que difere do comportamento normal de reprodução de mídia do Nextcloud, então adicionei isso.
Quem não o instalou, provavelmente não precisa.

É bastante confortável.
Fonte de referência e minhas modificações
Fonte de referência: How to use caching reverse proxy with NextCloud, problems with NC setting “cache-control”
proxy_pass https://x.x.x.x/remote.php/webdav/;
Essa pessoa fez isso, mas no meu caso, não funcionou bem.
Percebi que existem duas maneiras de especificar dentro do Nextcloud: /webdav/ e /dav/, e consegui fazer funcionar escrevendo a sintaxe para cada uma.
Em particular, quando tentei cachear o Nextcloud inteiro inicialmente, o comportamento ficou uma bagunça e, como esperado, não funcionou (risos)
Pensei que o cache ficaria cheio rapidamente devido a muito conteúdo, mas é eficaz para arquivos como imagens e músicas.
Consegui fazer várias outras otimizações para acelerar, então atualizarei se tiver vontade.