Включение прокси-кэша только для медиаконтента в Nextcloud
Привет, я бездарь.
Мое хобби — слушать музыку.
Я отменил все подписки и самостоятельно организовал всю свою музыку, но моя претензия к 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 целиком, поведение стало беспорядочным, и, как и ожидалось, это не сработало (лол).
Я подумал, что кэш быстро заполнится слишком большим количеством контента, но это эффективно для файлов, таких как изображения и музыка.
Я также смог ускорить работу различными другими способами, так что обновлю, если будет настроение.