在 Nextcloud 中仅对媒体内容启用代理缓存

3 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/**,我安装了用于音乐播放的插件,可能因为插件本身会调用 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 进行缓存时,行为变得一团糟,果然没有工作(笑)。

我曾想,内容太多会不会很快就塞满缓存?但对于图片和音乐等文件来说是有效的。

我还尝试了其他各种方法来加速,如果我有心情,我会更新。

Related Posts