我使用的是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是如何验证主机名的,此外,我也写了一篇关于这个的快速博客文章,这可能会有所帮助