Apache 错误 - 文件名太长:无法映射 GET

Apache 错误 - 文件名太长:无法映射 GET

我在 CentOS VPS 上安装了 PHP Laravel 应用程序。它是我最近更新的移动应用程序的后端。不幸的是,我写了一些错误的代码,导致发出的请求是数百甚至数千个单词的连接。

我的 apache 服务器经常宕机(每小时至少一次),我必须运行:service httpd restart。

正如我在 error.log 中看到的,有很多这样的条目:

(36)File name too long: Cannot map GET /adminpanel/public/api/v2/categoriese=c3Jr...    

每秒有数十个这样的请求,Apache 就瘫痪了。

我已将更新发布到应用商店,但有些用户仍使用旧版本。是否有可能在处理这些请求之前阻止它们?

答案1

Apache 内置默认限制为 8190LimitRequestLine 指令,它规定了 HTTP GET 请求的最大长度。如上所述,看看更改此参数是否能达到您的目的。

关于 Apache 每小时或更频繁地宕机:我很惊讶这与拒绝过长的 GET 请求有关。Apache 经过精心设计,可以以最小的努力丢弃不规则的请求,正是为了避免拒绝服务和资源耗尽。

根据您发布的内容,这听起来可能与您正在使用的多处理模块(MPM)的类型、最小/最大分叉进程与可用系统资源的关系以及当然您的成功请求在后端(PHP)上使用的处理能力有关。

答案2

作为临时解决方法,您可以设置限制请求行参数为长整数。

相关内容