django - 在 Nginx 后面通过 HTTPS 访问 Django Admin

标签 django redirect https nginx admin

我已经在 nginx 后面的 uwsgi 中运行了 django。当我尝试访问 https://site/admin/ 时,我看到了预期的登录屏幕。通过表单登录似乎成功了,但是,我只是回到了登录屏幕。 Firebug 显示重定向到普通的 http://site/admin/ url,然后由 nginx 重定向到 https url。

救命啊!我对如何强制管理应用程序仅使用 https 网址感到困惑。

请注意,这似乎是一个相关的、未解答的问题:https://example.com/admin redirects to https://admin in Django Nginx and gunicorn

最佳答案

将以下内容添加到 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

关于django - 在 Nginx 后面通过 HTTPS 访问 Django Admin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11943491/

相关文章:

python - django postgresql 操作错误 : index row size xxx exceeds maximum yyy

在 AWS Elasticbeanstalk 上部署后出现 django-oauth-toolkit 'invalid client' 错误

.htaccess - htaccess 301 从带有逗号的 URL 重定向不会重定向

regex - 重定向到 https 但没有 .php

java - 所有信任 HostnameVerifier 的 HttpURLConnection 都会导致 SSL 错误

curl - 使用 Git 的 libcurl 中不支持或禁用协议(protocol) https

python - 如何仅在Viewset Django中选择指定字段

python - Django 错误 : NoReverseMatch

PHP die() 显示短暂的白屏

.htaccess - Htaccess 重定向