为什么我得到一个apache服务器错误页面上的django vhost使用下划线在我的子域



我使用的是django 1.5.0和apache 2.2.22。我似乎不能得到我的网站运行作为一个命名的vhost(我有其他django网站已经运行在这个服务器上)。

我得到标准apache 500错误页面。我的错误日志提示我的ALLOWED_HOSTS设置有问题-

[Tue Jun 04 10:25:22 2013] [error] [client 31.52.39.247] SuspiciousOperation: Invalid HTTP_HOST header (you may need to set ALLOWED_HOSTS): sub_domain.mydomain.com

但是我的ALLOWED_HOSTS设置看起来不错-

python manage.py shell
>> from django.conf import settings
>> settings.ALLOWED_HOSTS
['sub_domain.mydomain.com', 'livedomain.com']

也-我不知道为什么我得到apache 500页,而不是django调试页-

>> settings.DEBUG
True

查看错误日志中的完整堆栈跟踪,我可以看到wsgi应用程序正在运行-它肯定是在运行django代码。

有什么建议吗?

首先,当您有DEBUG=True时,应该完全忽略ALLOWED_HOSTS,因此奇怪的是您会得到验证错误。

我有一个类似的问题与nginx,我有一个下划线在我的主机名,这意味着Django没有验证它。这可能是一个问题,特别是如果你有Apache重写你的主机头(这是我的情况,因为nginx是反向代理)或你的子域包括_

你可以在源代码中看到Django是如何验证主机名的,此外,我也写了一篇关于这个的快速博客文章,这可能会有所帮助

最新更新