[英]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.