8

nginxの背後にあるuwsgiでdjangoを実行しています。アクセスしようとするhttps://site/admin/と、期待されるログイン画面が表示されます。フォームからのログインは成功したようですが、ログイン画面に戻ってしまいます。Firebugは、プレーンhttp://site/admin/URLへのリダイレクトを示し、その後、nginxによってhttpsurlにリダイレクトされます。

ヘルプ!管理アプリにhttpsURLのみを使用させる方法について混乱しています。

これは関連する未回答の質問のようです:https://example.com/adminはDjango Nginxとgunicornのhttps://adminにリダイレクトします

4

3 に答える 3

11

nginx.confに以下を追加すると、問題が修正されました。

location / {
    ...
    include                 uwsgi_params;
    uwsgi_param             HTTP_X_FORWARDED_PROTOCOL https;
    uwsgi_param             UWSGI_SCHEME   $scheme;
}

以下をsettings.pyに追加するとともに:

SESSION_COOKIE_SECURE = True
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTOCOL', 'https')
CSRF_COOKIE_SECURE = True
于 2012-08-16T19:56:35.467 に答える
2

管理アプリへのすべてのトラフィックをhttpsにリダイレクトするために必要なは次のとおりです。

location /site/admin/ {
  rewrite ^ https://$host/$request_uri permanent;
}

それがうまくいかない場合は、実際のnginx構成ビットを投稿できますか?実際の設定がなければ、それ以上のことを実際に提案することはできません。

于 2012-08-15T20:39:35.490 に答える
0

Django 1.8 settings.pyのアップデート:

SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True
SECURE_SSL_REDIRECT = True
SECURE_REDIRECT_EXEMPT = [r'^(?!admin/).*']

SECURE_SSL_REDIRECT = Falseまた、開発リグの場合は、ローカル設定で上書きすることをお勧めします。

于 2017-10-17T22:18:22.207 に答える