← ishizakahiroshi.com
失敗談 2026-08-07

Nextcloud で複数ファイルをまとめてダウンロードできない。サーバーログには何も残っていなかった

長すぎる巻物が狭い投入口の前でつかえている夜の書斎

200 件弱のファイルを選んでダウンロードを押すと「要求されたファイルは使用できません。」とだけ出て、何も落ちてきません。権限でもファイル破損でもなく、選んだファイル名を全部 GET の URL に列挙する実装が、Web サーバーの 8k 上限を踏み抜いていました。さらに HTTP/2 では 414 すら返らず接続が切られるため、サーバーログに痕跡が残りません。上流の Issue は 2018 年から open のままです。

Qiita で読む →
記事の要約

この記事のテーマ

Nextcloud の複数選択ダウンロードは、選んだファイル名を JSON 配列にして GET のクエリに載せます。件数が増えるほど URL が伸び、8,192 バイト付近で Web サーバーが受け取りを拒否します。実測では 8,100 バイトまでは通り、8,200 バイトから 414 になりました。問題が起きたケースの URL は 2 万バイト前後で、上限の 2.5 倍です。

やっかいなのは調査のしにくさでした。ブラウザは HTTP/2 で繋ぐため、上限超過は 414 ではなく接続の切断(ENHANCE_YOUR_CALM)として処理されます。アクセスログにはリクエストラインが記録されず、ステータス 000 の 1 行だけが残る。「リクエストが 1 件も来ていない」ように見えるので、サーバー側は無実だと判断してしまいます。

HTTP/1.1 と HTTP/2 でログの残り方が違うことを示す図

同じ「長すぎる URL」でも、HTTP/1.1 なら 414 として記録され、HTTP/2 ではリクエストラインすら残らない 1 行になります。

上流の Issue #7935 は 2018 年 1 月の起票で今も open、GET を POST に変える PR #56543 は draft のまま止まっています。Web サーバーの上限を広げても件数が増えれば再発するため、フォルダごとダウンロードする運用で回避するのが現実解でした。