0

我正在使用 django 1.5.0 和 apache 2.2.22。我似乎无法让我的网站作为命名虚拟主机运行(我已经让其他 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 代码。

有什么建议么?

4

1 回答 1

1

首先,当您遇到验证错误ALLOWED_HOSTS时应该完全忽略它,这很奇怪。DEBUG=True

我在使用 nginx 时遇到了与此类似的问题,我的主机名中有一个下划线,这意味着 Django 没有验证它。这可能是一个问题,特别是如果您让 Apache 重写您的主机标头(对我来说就是这种情况,因为 nginx 是反向代理)或者您的子域包含_.

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

于 2013-06-04T13:10:42.293 回答