在 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/**,我安装了用于音乐播放的插件,可能因为插件本身会调用 Nextcloud 的 API,与 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 进行缓存时,行为变得一团糟,果然没有工作(笑)。
我曾想,内容太多会不会很快就塞满缓存?但对于图片和音乐等文件来说是有效的。
我还尝试了其他各种方法来加速,如果我有心情,我会更新。