Habilitar cache de proxy apenas para conteúdo de mídia no Nextcloud

5 min

language: ja bn en es hi pt ru zh-cn zh-tw

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.

Related Posts