Включение прокси-кэша только для медиаконтента в Nextcloud

5 min

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

Привет, я бездарь.

Мое хобби — слушать музыку.
Я отменил все подписки и самостоятельно организовал всю свою музыку, но моя претензия к Nextcloud — это медленная загрузка.

Среда
Домашний сервер Apache: Местоположение Nextcloud
nGinx VPS: Обратный прокси и кэширующий сервер

Сам контент каждый раз обращается к основному серверу, что увеличивает нагрузку на сервер, поэтому я решил улучшить это, пересмотрев прокси-кэш на стороне VPS, который также выступает в роли обратного прокси.

Быстро напишу синтаксис 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;

}

На самом деле,
proxy_ignore_headers Cache-Control Expires;
proxy_hide_header Cache-Control;
Я не уверен, есть ли смысл вызывать Cache-Control дважды здесь, но пока это работает хорошо.

Кроме того, что касается **/index.php/apps/music/api/file/**, я установил плагин для воспроизведения музыки, и поскольку сам плагин, вероятно, вызывает API Nextcloud, он ведет себя иначе, чем обычное воспроизведение медиа в Nextcloud, поэтому я добавил это.
Те, кто его не установил, могут не добавлять.

Довольно удобно.

Источник и внесенные изменения

Источник: How to use caching reverse proxy with NextCloud, problems with NC setting “cache-control”

proxy_pass https://x.x.x.x/remote.php/webdav/;
Этот человек сделал так, но у меня это не сработало.
Я понял, что в Nextcloud есть два случая: когда указан /webdav/ и когда указан /dav/, и мне удалось добиться успеха, написав синтаксис для каждого.

В частности, когда я впервые кэшировал Nextcloud целиком, поведение стало беспорядочным, и, как и ожидалось, это не сработало (лол).

Я подумал, что кэш быстро заполнится слишком большим количеством контента, но это эффективно для файлов, таких как изображения и музыка.

Я также смог ускорить работу различными другими способами, так что обновлю, если будет настроение.

Related Posts