Apache-2.2

在 Django 管理員上上傳 > 1 MB 的文件會給出 400 Bad Request 響應

  • March 23, 2011

我通過 mod_wsgi (3.x) 在 Apache (2.x) 上部署了一個小型 Django (1.2.x) 項目。在後台,如果我上傳一個小於 1MB 的文件,我可以通過;但是,對於一個大小為 1.2MB 的文件,我從伺服器收到 400 響應,其中僅在正文中顯示“錯誤 400 ”。我想知道為什麼會這樣。據我所知,Apache 配置中沒有LimitRequestBody設置。我曾嘗試使用多種瀏覽器上傳,包括:Firefox、Chrome 和 Safari。

在 Apache 的日誌文件中,顯然沒有給出 400 錯誤響應的請求條目。這很奇怪。

我應該指出,發生這種情況的情況是:有問題的項目部署在負載均衡器後面的兩個相同的 Apache 伺服器(完全相同的設置)上。當然,在我的開發設置中,問題並未浮出水面。

對此的任何幫助將不勝感激。

更新:我發現為負載平衡器記錄了以下錯誤消息:Bad request headers : Content-length exceeds post body limit。另一個有趣的地方是,如果文件 > 1 MB 是通過 HTTPS 上傳的,它可以正常執行。但是,當它通過 HTTP 上傳時,它會發出 400 錯誤。

更新#2:我決定使用簡單的 Python 和 web.py 編寫一個簡單的文件上傳程序。我把它部署在生產伺服器上,在相同的虛擬主機配置下,在mod_wsgi. 當應用程序通過 SSL 提供時,文件上傳工作。但是Error 400當他們通過非 SSL 服務時,他們給出了。所以,我比以前更難過。

我將自己回答這個問題,因為問題已經解決。非常感謝RedmumbaGraham Dumpleton的評論。

問題當然不在於 Django(正如我們已經確定的那樣)。然而,事實證明它與 Apache 無關。問題出在系統管理員完全忘記的系統防火牆上(嘆氣)。顯然,防火牆的文件大小限制為 1MB。

引用自:https://serverfault.com/questions/248935