#django #nginx #fastcgi #django-settings #mod-fastcgi
#django #nginx #fastcgi #django-настройки #мод-fastcgi
Вопрос:
Я только что обновился с django 1.2.4 до 1.3.
Я использую nginx в сочетании с fastcgi и по какой-то причине каждый раз, когда я захожу на страницу, я получаю эту ошибку:
Unhandled Exception
An unhandled exception was thrown by the application.
Есть идеи, в чем может заключаться проблема?
Комментарии:
1. не могли бы вы добавить в свой error.log файл pastebin и, возможно, файлы конфигурации.
2. @ashwoods Я нашел кое-что в файле /var/log/nginx/localhost.error_log: File «/usr/local/lib/python2.6/dist-packages/django/core/handlers/base.py «, строка 51, в load_middleware вызывает исключения. Неправильно сконфигурировано (‘Модуль промежуточного программного обеспечения «%s» не определяет класс «%s»‘ % (mw_module, mw_classname)) Неправильно сконфигурировано: модуль промежуточного программного обеспечения «django.middleware.http» не определяет класс «SetRemoteAddrFromForwardedFor» при чтении заголовка ответа из восходящего потока, клиент: 192.168.1.1, сервер: mysite.com , запрос: «GET /home/ HTTP/1.1», восходящий поток: «fastcgi://127.0.0.1:1234», хост: «mysite.com »
Ответ №1:
Вам необходимо отследить свой журнал ошибок fastcgi. Там должна быть более подробная информация.
Комментарии:
1. Я не уверен, есть ли у fastcgi журнал ошибок, но я заглянул в /var/log/nginx/error.log и ничего не нашел.
Ответ №2:
Чтобы исправить это, я добавил этот класс (который практически ничего не делает) в : /usr/local/lib/python2.6/dist-packages/django/middleware/http.py
class SetRemoteAddrFromForwardedFor(object):
"""
This middleware has been removed; see the Django 1.1 release notes for
details.
It previously set REMOTE_ADDR based on HTTP_X_FORWARDED_FOR. However, after
investiagtion, it turns out this is impossible to do in a general manner:
different proxies treat the X-Forwarded-For header differently. Thus, a
built-in middleware can lead to application-level security problems, and so
this was removed in Django 1.1
"""
def __init__(self):
import warnings
warnings.warn("SetRemoteAddrFromForwardedFor has been removed. "
"See the Django 1.1 release notes for details.",
category=DeprecationWarning)
raise MiddlewareNotUsed()