[英]Request Entity Too Large
我收到這條消息,
Request Entity Too Large
The requested resource
/index.php
does not allow request data with POST requests, or the amount of data provided in the request exceeds the capacity limit.
我設置
php_value post_max_size 50M
php_value upload_max_filesize 50M
在.htaccess
但沒有幫助
如何克服這個?
謝謝
看完 PHP 的memory_limit
、 post_max_size
和upload_max_filesize
的提升后,我想給你推薦一些相關的文章,也許其中一篇可以解決問題。
我在服務器故障上找到了這篇文章:
https://serverfault.com/questions/79741/php-apache-post-limit/79745#79745
sybreon建議仔細檢查Content-Length
,並引用- “確保您直接連接到 Apache,而不是通過代理或反向代理。一些反向代理對請求的最大大小設置了上限作為一種安全措施。因此,您可能需要檢查它以及您的 Apache 日志,以確保沒有其他事情發生。”
sybreon 還發布了此鏈接: Apache 413 錯誤問題。
以下僅適用於在 Apache 中打開mod_ssl模塊的情況。 (否則此設置會導致服務器崩潰。)
引用文章:
“我使用的是 Apache SSL 客戶端證書,其限制為 128K,如果必須重新協商,更大的 POST 將失敗。
這個 Bugzilla 帖子有線索 - 您必須將以下內容設置為 SSL 服務器的默認值,而不僅僅是目錄。
SSLVerifyClient require
否則,它會強制進行某種形式的重新協商,並因 413 錯誤而失敗。”
上一篇文章也提到了LimitRequestBody指令。
一個人在這里說這個指令的適當設置解決了他的問題。 .
我希望這些設置之一可以解決這個問題!
唯一對我有用的是調整 SSL 緩沖區大小。 您可以通過...
<Directory /my/blah/blah>
...
# Set this to something big...
SSLRenegBufferSize 10486000
...
</Directory>
...然后只需重新啟動 Apache 即可使更改生效。 (在: http : //forum.joomla.org/viewtopic.php?p=2085574找到這個)
您還可以使用“Location /”將設置簡單地應用於整個 VirtualHost:
<VirtualHost *:443>
# ...
<Location />
SSLRenegBufferSize 101048600
</Location>
# ...
</VirtualHost>
我的服務器是 Apache。 是 mod_security 模塊,它阻止了大約 171 KB 的大數據的發布。 我在 mod_security.conf 中做了以下配置
SecRequestBodyNoFilesLimit 10486000
SecRequestBodyInMemoryLimit 10486000
如果PHP中的max_post_upload和max_file_upload已經設置,並且在Apache2.conf或者LimitRequestBody的ModSec配置文件中設置的足夠高
那么 .htaccess 文件可能會起作用。
2 . 制作或編輯 .htaccess
3 . 編輯或創建一行,其中包含 LimitRequestBody 20971520。
保存 .htaccess。 設置權限。 ( 644 和 apache 所有者)
可能重啟apache。
多田。 希望修復。
此設置僅為此文件夾設置限制 - 這是避免 php 和 apache 中的全局設置的一種方法,該設置使您容易受到大數據包/加載 DOS 攻擊。
LimitRequestBody 0 為您提供無限上傳。
我在最后一天左右為這個 413 - Request entity too large 問題苦苦掙扎,因為我試圖將非常大(以 MB 為單位)的圖像上傳到服務器。
我的設置是 apache (227) 將請求代理到 jboss eap (6.4.20) 服務器以訪問其余端點。
2 事情對我有用。
使 SSLVerifyClient 在虛擬主機級別成為必需。 這意味着所有資源都需要提供有效的客戶端證書才能提供服務。 這對我來說不是一個選擇,因為除 /api 之外的所有資源都不應受到相互身份驗證保護。 所以,雖然它有效,但這對我來說不是一個選擇。
我刪除了所需的全局級別 SSLVerifyClient 並將其保留為“可選”。 我僅在<Location /api>...</Location>
上啟用了必需選項。 訣竅是僅在達到某個閾值后才進行 SSL 重新協商 - 這將是我們所需的上傳文件大小。
所以,最后發現我必須在特定的 LocationMatch 上啟用“SSLRenegBufferSize”設置,如下所示:
<LocationMatch ^/api/v1/path/(.*)/to/(.*)/resource/endpoint$>
SSLRenegBufferSize 5242880 #allow upto 5MB for files to come through </LocationMatch>
(.*) 在上面的例子中代表我在端點中的路徑參數。 希望這可以幫助。
在 php.ini 中提高 PHP 的 memory_limit、post_max_size 和 upload_max_filesize 后,我仍然遇到問題。
還需要的是 apache2.conf 中的以下內容:
限制請求正文 1000000000
這是 1GB 的最大大小。
文檔說 0 是默認值,表示無限制。 但是,在我設置指令之前,我無法上傳大文件。
不要忘記重新啟動 apache2。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.