![](/img/trans.png)
[英]Debugging Apache/Django/WSGI Bad Request (400) Error then aliasing sub-path
[英]Debugging Apache/Django/WSGI Bad Request (400) Error
我簡單的Django應用程序在調試模式( manage.py runserver
)上運行良好,並且在開發箱上的WSGI + Apache下運行,但是當我推送到EC2時,我開始收到間歇性的(錯誤時間Bad Request (400)
10-80%)錯誤Bad Request (400)
表示我嘗試查看的所有URL(無論是在我的應用中還是在Django管理員中)。
在哪里可以找到有關此信息的調試信息? 即使使用LogLevel=info
,也不會在/var/log/apache2/error.log
顯示任何內容。 我已經檢查了版本,記錄了Request環境(請參閱ModWSGI Debugging Tips ),沒有發現主要差異。
我剩下的一個想法是,我使用的是針對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 docs不再在線,我更新了鏈接以轉到django 1.7 docs進行ALLOWED_HOSTS
設置。
如果您確實設置了ALOWED_HOSTS
,請確保您的主機名不包含下划線。 從技術上講這是非法的。
我不得不打印出各種功能,它歸結為此正則表達式無法在django.http
檢測到域。
host_validation_re = re.compile(r"^([a-z0-9.-]+|\[[a-f0-9]*:[a-f0-9:]+\])(:\d+)?$")
確實,我的領域里有一個下划線。
這不是解決方案 ,但是出於調試目的,您可以像這樣在settings.py中設置ALLOWED_HOSTS設置
ALLOWED_HOSTS = ['*']
它肯定應該工作。 如果不是這樣,至少您會知道問題不是Django拒絕訪問給定的URL。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.