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/で指定している場合2つある事に気づき、それぞれの構文を記述することで成功しました。

特にNextcloudを最初に全体に対してキャッシュしたら、動作がめちゃくちゃになって案の定動きませんでした(笑)

コンテンツありすぎてすぐキャッシュパンパンになるのでは?と思いましたが、画像や音楽などのファイルに関しては有効的です。

他にも色々手付けて高速化出来たので気が向いたら更新します。

4 throughts on "Nextcloudでメディアコンテンツに対してのみプロキシキャッシュを有効にさせる"

  1. 真逆だね、私この前にはロカールの音楽プレイヤーで音楽を聴いてたけど、最近 Spotify の Premium を購読しちゃったばかりだな。。ハツラツさんはどこからロカールの音楽ファイルをダウンロードしてるかな。ちょっと不便でしょか?あと、以前は似てることやってみたことがあって読み込みスピードが結構だと思うので、Github での Alist という項目をみてみたら悪くないと思うww

    1. はろ一!

      今年の1月くらいまで契約してたけど解約した理由はクラウド依存になるとその値上がりに反抗する事が出来なくて、 支払うしかなくなるから全部解約した!
      サブスクリプションで月々1000~3000円を1年間12,000円~36,000円だとするとその分CDとかDVD買えてしまうから・・・。サブスクリプションの怖いところは自分の手元に何も残らない事というのに気付いた。

      あと、音楽は昔から買ってたCD、レコードとかをインポートしたデータが沢山あるからそれをNextcloudに上げてるよー。実際Youtubeから保存したり他にも色々手はあるけど、音質至上主義だから音源として持っておきたい物が沢山あるからCD、DVDみたいな現物も買ってる!
      映画とかのDVDとかも買うか、GEOとかツタヤでレンタルしてきたものをmp4化してアップして見てる!

      alist初めて見たけどこんな物もあるのか・・・。Nextcloudと違って多数の人と色々なファイルを共有するのに向いてそう。
      Web上の仮想GUIファイルマネージャーみたいな印象だ。
      これのメディア共有すごい向いてそう!
      音楽はNextcloud結構使いやすいんだけどビデオ再生がマジで使いづらいから時間あったら入れてみる\(^o^)/教えてくれてありがとう

      どういう音楽好きか分からないけど欲しいのあれば送るよー

コメントを残す

管理人が承認後コメントが公開されます。
の項目は必須項目となります。