我简单的Django应用程序在调试模式(manage.py runserver)下工作正常,并且在开发箱上的WSGI + Apache下运行,但是当我使用EC2时,Bad Request (400)我尝试收到的所有URL都出现间歇性错误(10-80%的时间)视图(无论是在我的应用中还是在Django管理员中。
manage.py runserver
Bad Request (400)
在哪里可以找到有关此信息的调试信息?什么都没有出现/var/log/apache2/error.log,即使有LogLevel=info。我已经检查了版本,记录了Request环境(请参阅ModWSGI Debugging Tips),没有发现主要差异。
/var/log/apache2/error.log
LogLevel=info
我剩下的一个想法是,我正在使用针对Python 2.7.1构建的Ubuntu 12.04的mod_wsgi(libapache2-mod-wsgi 3.3-4build1);我有Python 2.7.3。Django是1.6,比Ubuntu Precise版本更新。我犹豫要从源代码开始构建软件包,因为清理起来非常困难,而且这些更改似乎是次要的版本更改…
感谢您的帮助。
(作为参考,这是Apache config和WSGI应用程序)
<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www WSGIScriptAlias /rz /usr/local/share/rz/rz.wsgi ...
import os import sys import django.core.handlers.wsgi import pprint path = '/usr/local/share/rz' if path not in sys.path: sys.path.insert(0, path) os.environ['DJANGO_SETTINGS_MODULE'] = 'rz.settings' class LoggingMiddleware: def __init__(self, application): self.__application = application def __call__(self, environ, start_response): errors = environ['wsgi.errors'] pprint.pprint(('REQUEST', environ), stream=errors) def _start_response(status, headers, *args): pprint.pprint(('RESPONSE', status, headers), stream=errors) return start_response(status, headers, *args) return self.__application(environ, _start_response) application = LoggingMiddleware(django.core.handlers.wsgi.WSGIHandler())
像这样将ALLOWED_HOSTS设置添加到您的settings.py中…
ALLOWED_HOSTS = [ '.example.com', # Allow domain and subdomains '.example.com.', # Also allow FQDN and subdomains ]
我遇到了同样的问题,并在文档中找到了答案
更新:django 1.6文档不再在线,我更新了链接以转到django 1.7文档进行ALLOWED_HOSTS设置。
ALLOWED_HOSTS