为什么Django / mod_wsgi在某些URL长度上崩溃?

时间:2010-09-20 16:15:12

标签: django mod-wsgi

我在这里遇到了一个奇怪的问题:当Apache给出的URL路径部分的长度在[23..26,30]时,我从Apache服务Django 1.1应用程序得到500错误代码。 0.33。例如,http://server/012345678901234567890123会导致500错误,而http://server/012345678901234567则不会。

每500错误也会导致“请求来源无法验证”。来自日志mod_wsgi的错误消息。只有Apache的URL(如图像)才会出现错误,只会发生在Django上。

知道为什么会这样吗?

2 个答案:

答案 0 :(得分:1)

将此信息发送到Google网上论坛中正确的mod_wsgi列表,并详细说明您正在使用的Apache,Python和mod_wsgi的版本。还要指出您正在使用的Apache MPM以及您正在使用的任何其他非标准Apache模块。可能也想知道是否使用32位或64位应用程序。

此错误特定于守护程序模式,并且在它甚至到达您的WSGI应用程序之前发生。坦率地说,除非存在一定程度的内存损坏或一些非常微妙的错误导致错误,否则永远不应该发生错误,这种错误由于某种原因从未发生过大量现有用户。

最近有另外一人报告此事。你似乎已经能够将它与特定的URL长度联系起来,这在以前没有被提出过,至少是一个线索。

请注意,即将去度假。你花了8个小时才能再次认真看待它,然后在我回来之前真的很难。

答案 1 :(得分:0)

这可能是您应用代码中某处出现的错误吗?

更改站点的apache设置,以便WSGI创建自己的错误日志

LogLevel info
ErrorLog /tmp/error_log

然后运行

tail -f /tmp/error_log

尝试加载一个长网址。希望错误消息将出现在日志文件中。至少,它应该确定真正的错误是什么。