Nextcloud、Cloudreve、Alist等網盤使用Cloudflare CDN服務,上傳超過100MB檔案失敗的排錯
前言 懶懶一直是自建網盤的使用者,目前以Cloudreve網盤作為主力使用,而Nextcloud作為備用網盤使用! 但前一陣子想傳輸大檔案(檔案大小超過100MB)時,卻發現兩種網盤(綁定同種域名下)雙雙出現Cloudflare返回502(Bad Gateway)錯誤! 排查分析 (1).懷疑原因:NGINX設定錯誤 因懶懶將Nextcloud架在VPS上頭,且為求使用方便故部屬在公網上,為保護原IP地址所以使用NGINX反代域名使用,而域名通過Cloudflare Proxy,原本單純以為沒設定NGINX設定檔的client_max_body_size而已 server { ......... location / { .... client_max_body_size 10G; .... } ......... } 後來發現完全不對,因為我的Cloudreve網盤也是放在公網,然後使用域名進行訪問,但我Cloudreve網盤是使用Cloudflare Tunnel作內網穿透,壓根沒使用NGINX啊! (2).懷疑原因:CloudFlare 免費版限制 經了解CloudFlare免費版有 upload size (HTTP POST request size) 100MB限制,但經懶懶爬文Cloudreve及Nextcloud皆有支援分片(分塊)上傳(chunked upload)的功能,但經懶懶在上傳途中觀察,每當第一個分片上傳完成就會卡住,無論每個分片大小是50MB或是100MB,問題依舊沒解決。 Cloudflare官方說明文件 Cloudflare Zero Trust - account-limits https://developers.cloudflare.com/cloudflare-one/account-limits/ Cloudflare Cache - Customization options and limitations https://developers.cloudflare.com/cache/about/default-cache-behavior/ Cloudflare Workers - Request limits - (413) Request entity too large https://developers.cloudflare.com/workers/platform/limits/ (3).懷疑原因:CloudFlare 緩存問題 經爬文後發現有網友說只要域名不經過Cloudflare Proxy(即DNS only),直接直連就能解決問題,但這樣就享受不到Cloudflare提供的防護了!(翻桌 Cloudflare Proxy狀態 後來懶懶想到之前有設定Page Rules讓Cloudreve Bypass掉緩存(因為使用CDN有BUG,會讓手機端登入頁面不斷刷新),那時上傳功能一切正常,但礙於免費版的Page Rules只能設定3個,所以不久後即將該設定移除,然後在移除後就發生上傳大檔案失敗的問題。...