python - Apache / Django / WSGI Bad Request(400)エラーのデバッグ

原文 python django apache mod-wsgi django-wsgi

私のシンプルなDjangoアプリはデバッグモード(manage.py runserver)で正常に動作し、開発ボックスのWSGI + Apacheで動作しますが、EC2にプッシュすると、Bad Request (400)の断続的な(10〜80%の時間)エラーが発生し始めました表示しようとするすべてのURLについて(アプリでもDjango管理でも)

これに関するデバッグ情報はどこにありますか? /var/log/apache2/error.logを使用しても、LogLevel=infoには何も表示されません。バージョンを確認し、リクエスト環境をログに記録しました(ModWSGI Debugging Tipsを参照)。大きな違いはありません。

私が考えていた残りの1つは、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設定とWSGIアプリを示します)

Apache設定(000-デフォルト)

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot /var/www
    WSGIScriptAlias /rz /usr/local/share/rz/rz.wsgi
    ...


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
]


私はこれと同じ問題を抱えており、答えを見つけましたhere in the docs

更新:django 1.6のドキュメントはオンラインではなくなりました。リンクを更新して、ALLOWED_HOSTS設定のdjango 1.7のドキュメントに移動しました。
関連記事

python - 別のアプリからユーザーのアバターを取得する方法は?

python - Rのカスタムインストールでのrpy2の使用

python - numpy配列をハッシュする最も効率的なプロパティ

python - ラムダ関数を含むpython3フィルターオブジェクト

python - CygwinバッチからPythonスクリプトを自動実行する

python - Python、複数行の記述

python - 関数に渡されたパラメーター値を文字列として取得する方法

python - p4pythonを使用してSSL対応のPERFORCEサーバーに接続できません

python - Tkinterで文字を画像にマッピングする

python - ロギングライブラリの使用方法(Pythonでのロギングの実装)