問題
Nextcloud 在 Nginx 反向代理至 Docker Compose 建置的環境卻無法正常上傳檔案
※ 有提供 Nginx 的 error.log
給 ChatGPT 看。
解方
從 error.log
中的錯誤訊息來看,有幾個主要的問題需要解決:
緩衝上游響應至臨時文件:多次出現 an upstream response is buffered to a temporary file
警告,這表示 Nginx 必須將來自上游伺服器(Nextcloud 容器)的響應緩衝到臨時文件中,因為響應的大小超過了預設緩衝區大小。
客戶端傳輸的請求體積過大:client intended to send too large body
錯誤表示客戶端嘗試上傳的文件大小超過了 Nginx 的預設限制。
解決方案
1. 調整 Nginx 緩衝區設定
增加 Nginx 的緩衝區大小設定來解決緩衝上游響應的問題:
在 Nginx 配置檔案中(如 /etc/nginx/nginx.conf
或您的站點配置檔案),增加以下設定:
http {
# 其他設定...
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
# 其他設定...
}
2. 調整客戶端請求體積限制
增加 Nginx 的客戶端請求體積限制,允許更大的文件上傳:
在您的站點配置檔案中,添加或修改以下設定:
server {
listen 80;
server_name <your-nc-domain>;
client_max_body_size 100M;
location / {
proxy_pass http://localhost:8000;
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;
}
}
完成設定後重啟 Nginx
保存以上設定後,重啟 Nginx 服務以應用更改:
sudo systemctl restart nginx
這樣應該可以解決大多數與緩衝區和文件上傳大小相關的問題。如果問題仍然存在,請提供更多的日誌訊息以便進一步分析。