3

Nginx + Supervisord を使用して、SSL の背後にある django サイトをホストしています。サイト インデックスは正常に読み込まれます。ローカル サーバーを使用して HTTPS を使用しなくても、すべてローカルで正常に動作します。私はDjango 1.4.2を使用しています

何らかの理由で、奇妙なリダイレクトが発生します。

管理者を使用しているときにアイテムを編集すると、ホームページにリダイレクトされます。保存のために新しいアイテムを送信すると、404 が返されます (ただし、データは保存されます)。

管理者以外: ここでも、フォームを送信すると、「成功」ではなくホームページに戻ります。

ホームページに行く理由は説明できます。私の nginx は、http 以外のすべてのトラフィックをhttps://localhost301 リダイレクトでリダイレクトします。したがって、django は場所に安全な URL が必要だとは考えていないと思います。

問題は、django が安全な URL を想定していないか、request.is_secure が False であることです。

私はこれに注意しましたSO Nginxの背後にあるHTTPSを介したDjango管理者へのアクセス プロキシパスの変更を行いましたが、これを処理するために何もしないと思います。でもここはそのまま。

設定.py

SESSION_COOKIE_SECURE = True
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTOCOL', 'https')
CSRF_COOKIE_SECURE = True

警告: 私は django にかなり慣れていません。

4

1 に答える 1