본문 바로가기
파이썬

파이썬 Apache / Django / WSGI 잘못된 요청 (400) 오류 디버깅

by º기록 2020. 12. 30.
반응형

내 간단한 Django 앱은 디버그 모드 ( manage.py runserver )에서 잘 작동하고 내 dev box의 WSGI + Apache에서 작동하지만 EC2로 푸시 할 때 간헐적으로 수신되기 시작했습니다 (10-80 % 시간) 내가 보려고하는 모든 URL에 대한 잘못된 요청 (400) 오류 (내 앱에서든 Django 관리자에서든).


남은 생각은 Python 2.7.1에 대해 빌드 된 Ubuntu 12.04 (libapache2-mod-wsgi 3.3-4build1)의 mod_wsgi를 사용하고 있다는 것입니다. Python 2.7.3이 있습니다. Django는 1.6으로 Ubuntu Precise 버전보다 최신 버전입니다. 정리하기가 너무 어렵고 사소한 버전 변경처럼 보이기 때문에 소스에서 패키지 빌드를 시작하는 것이 주저합니다.

도움을 주셔서 감사합니다.

(참고로 Apache 구성 및 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 문서가 더 이상 온라인 상태가 아닙니다. ALLOWED_HOSTS 설정에 대한 django 1.7 문서로 이동하도록 링크를 업데이트했습니다.

 

참조 페이지 https://stackoverflow.com/questions/20321673

 

 

반응형

댓글