將 Nextcloud 的 Web 上傳限制提高到 2 GB 以上
透過調整 PHP、Nginx 或 Apache、暫存和逾時設置,讓 Nextcloud 瀏覽器上傳更大的文件,並驗證是哪個限制阻止了文件上傳。
如果 Nextcloud 瀏覽器上傳到 2GB 後停止,則需要提高處理該請求的每一層(PHP、Web 伺服器或反向代理,以及任何正在使用的暫存)的上傳限制。對於 5GB 的目標文件,典型的 PHP-FPM 和 Nginx 配置需要額外的資源upload_max_filesize = 5G,post_max_size = 6G以及client_max_body_size 5G足夠的磁碟空間和傳輸時間。
Nextcloud 沒有統一的 2GB 上傳上限。目前的管理手冊指出,預設最大上傳大小為 512MB,而 2GB 以下的限制是 32 位元系統上的硬性上限。伺服器如果上傳大小剛好達到 2GB,則更有可能是達到了配置的限製或中間限制。以下步驟以 5GB 為例;請依照您實際需要的最大檔案大小進行替換。
通常情況下,可見的限制是由 PHP 或 Web 伺服器而非 Nextcloud 設定決定的。 Nextcloud 支援的最大檔案大小還取決於作業系統、檔案系統、帳戶配額和可用臨時磁碟空間。其桌面同步客戶端的情況有所不同:它以較小的區塊傳輸文件,因此不受此處所述的單一請求上傳限制。
首先確定請求路徑。檢查使用者是透過瀏覽器、WebDAV 還是桌面用戶端上傳文件,以及網站是否經過 Nginx、Apache、負載平衡器或主機供應商的代理伺服器。如果您不是伺服器管理員,請將失敗的檔案大小、上傳方式、失敗時間以及任何錯誤代碼傳送給管理員;只有他們才能更改伺服器端的限制。
對於 PHP-FPM,請編輯為 Nextcloud 提供服務的 PHP-FPM 服務所使用的配置,而不僅僅是命令列 PHP 配置。在 Debian 或 Ubuntu 系統上,常用路徑是 `<path>` /etc/php/8.2/fpm/php.ini;請將 `<path>` 替換8.2為已安裝的 PHP 版本。您的發行版或容器可能會使用不同的路徑。 PHP 手冊指出,`<path>`post_max_size必須大於 `<path>` upload_max_filesize,因此請預留足夠的空間以應對請求開銷。

請根據您的伺服器情況設定適當的值。例如,對於 5 GB 的伺服器:
upload_max_filesize = 5G
post_max_size = 6G
max_input_time = 3600
max_execution_time = 3600

超時值僅供參考,並非普遍適用的要求。連接速度慢、伺服器繁忙以及需要在最後組裝的上傳任務可能需要更長的逾時時間。 PHP 記憶體設定和每個工作進程的資源限制仍然至關重要:不要自動將每個 PHP-FPM 工作進程的記憶體限制設為幾 GB。 Nextcloud 的 PHP 指南建議每個進程至少分配 512 MB 記憶體;在提高資源限制之前,請監控主機及其 PHP-FPM 池。
儲存檔案並重新啟動相關的 PHP-FPM 服務,使其讀取新設定。例如,在 PHP 8.2 系統上,該服務可能是php8.2-fpm:
sudo systemctl restart php8.2-fpm
服務名稱各不相同。在容器中,請根據部署流程更新已掛載的配置或鏡像,並重新建立 PHP 容器。
對於 Nginx,請將 body-size 指令放在serverNextcloud 的活動程式碼區塊中,或放在更具體的適用程式碼location區塊中:
client_max_body_size 5G;

然後驗證組態並重新載入 Nginx:
sudo nginx -t
sudo systemctl reload nginx
如果 Nginx 報告語法錯誤,請在重新載入之前修復它。如果前端還有其他代理、入口控制器或託管網關,它們可能會強制執行自身的請求體長度限制;也請提高該限制。上游代理的限制可能會拒絕上傳,即使 Nextcloud 主機配置正確。
對於 Apache,請檢查LimitRequestBody對應的虛擬主機或目錄配置。 Nextcloud 的目前文件指出,Apache HTTP Server 2.4.54 及更高版本預設將此指令設為 1 GiB;這可能會阻止超過此大小的單一請求上傳。請根據主機情況設定適當的位元組限制,或0僅在您明確希望取消 Apache 請求體大小限制時才使用此指令。 Apache 可能還需要更長的請求逾時時間,尤其是mod_reqtimeout在啟用此功能的情況下。
是的。 PHP 的上傳暫存目錄、Nextcloud 設定的暫存目錄、以及 Nginx 的暫存目錄都client_body_temp_path必須有足夠的可用空間且可寫入。要預留空間以應對並發上傳,並且在某些儲存配置中,還需要預留空間df -h來組裝上傳的資料塊。使用 `config /etc/fs/filesystem` 指令檢查相關檔案系統,並確認服務帳號可以寫入設定的暫存目錄。請勿將臨時設定指向已滿或唯讀的捲。
同時檢查使用者的 Nextcloud 配額和伺服器的可用儲存空間。提高請求大小限制不會增加使用者的配額或磁碟容量。僅當帳戶有足夠的空間容納該文件時才提高配額。如果錯誤發生在上傳即將結束時,或報告逾時或網關錯誤,請在提高更多限制之前檢查 PHP、Web 伺服器、代理程式和 Nextcloud 日誌。 Nextcloud 手冊特別指出 PHP 逾時和 Nginx 逾時fastcgi_read_timeout可能是導致錯誤的原因,包括在最後的 MOVE 請求期間。
需要注意的是:PHP 的機制upload_max_filesize可能post_max_size無法以相同的方式控制 WebDAV 單一檔案 PUT 請求或 Nextcloud 的分塊上傳請求;對於這些路徑,PHP 和 Web 伺服器的逾時可能是限制因素。在變更不適用於該上傳方式的值之前,請先診斷上傳方式。
首先上傳一個遠大於原始限制的文件作為測試文件,然後再上傳一個接近新目標的文件作為測試文件。使用先前上傳失敗的相同瀏覽器或客戶端進行上傳。確認傳輸完成,檔案大小符合預期,並且可以下載或開啟。文件視圖中顯示的綠色「上傳完成」指示器是一個有用的初步判斷依據,但也要比較實際儲存的檔案大小。

如果測試仍然失敗,請利用錯誤訊息尋找下一個限制層:HTTP 413 錯誤表示請求體長度限制,504 錯誤或接近完成時失敗表示逾時,而配額或磁碟空間不足的訊息則表示儲存容量不足。查看相同時間戳記的日誌,然後僅調整導致問題的設定。將限制值保持在接近預期最大上傳量的位置,並保留足夠的臨時空間以應對並發活動。
透過調整 PHP、Nginx 或 Apache、暫存和逾時設置,讓 Nextcloud 瀏覽器上傳更大的文件,並驗證是哪個限制阻止了文件上傳。
設定 Nextcloud 實際使用的 PHP 記憶體限制,重新啟動對應的服務,並在管理概覽中確認 512 MB 設定。
使用 Nextcloud 的 S3 後端,透過正確的端點、憑證、存取範圍和驗證步驟,掛載相容的物件儲存桶。
使用持久 UUID 掛載、維護模式、已驗證的副本和原始路徑符號鏈接,安全地將 Linux Nextcloud 資料目錄移至外部驅動器。
透過診斷 SQL 錯誤、檢查資料庫連線並安全地完成中斷的遷移,在更新後恢復 Nextcloud 存取。
使用 Nextcloud 的 OCC 命令從伺服器 shell 重設管理員密碼,並提供有關使用者名稱、權限和外部登入提供者的指導。
透過在 Apache、NGINX 或 TLS 代理程式上設定標頭來清除 Nextcloud 的 HSTS 警告,然後安全地驗證公共 HTTPS 回應。
追蹤 App Store 安裝失敗是否由 DNS、HTTPS、代理、TLS 或 Nextcloud 伺服器本身的設定問題所引起。
將縮圖製作移至受控的後台計劃,修剪未使用的預覽尺寸,並在不使 Nextcloud 伺服器過載的情況下驗證佇列。
找到導致 Nextcloud 同步失敗的檔案、排除規則、連線問題或用戶端資料庫狀態,然後安全地驗證上傳和下載。