【问题标题】:Force HTTPS in Nginx for Django在 Nginx 中为 Django 强制使用 HTTPS
【发布时间】:2013-05-03 06:19:26
【问题描述】:

我已经尝试过这样做:

  1. 在与我的 settings.py 相同的目录中创建一个名为 middleware.py (chmod 775, chown www-data) 的文件
  2. 在 middleware.py 中粘贴:http://djangosnippets.org/snippets/880/
  3. 将此粘贴​​到我的 settings.py 中:

    MIDDLEWARE_CLASSES = ( #...
        'djo.middleware.SSLRedirect',
    )
    
    SSL_ENABLED = True
    SSL_URLS = (
        r'/admin/',
    )
    

我得到:内部服务器错误

显示的开发服务器中没有错误。

建议?

【问题讨论】:

  • 你检查错误日志了吗?
  • Nginx 没有抛出任何错误,django 服务器只显示一个 get 请求。浏览器只显示“发生服务器错误,请联系管理员”。你能想到别的地方试试看吗?

标签: django nginx django-admin


【解决方案1】:

发现问题。我发生了一个无限循环,并按照此站点进行了修复:

http://yuji.wordpress.com/2008/08/15/django-nginx-making-ssl-work-on-django-behind-a-reverse-proxy/#comment-1941

基本上,将这个添加到文件的代理位置部分下的 nginx 服务器 conf 设置中:

SECURE_PROXY_SSL_HEADER = (‘HTTP_X_FORWARDED_PROTOCOL’, $scheme)

然后添加到你的 django 设置文件中:

MIDDLEWARE_CLASSES = (...
'djo.middleware.SecureRequiredMiddleware',
)

ROOT_URLCONF = 'djo.urls'

HTTPS_SUPPORT = True
SECURE_REQUIRED_PATHS = (
    r'/admin/',

然后在同一个 django 目录中创建一个名为“middleware.py”的文件,内容如下:

from django.http import HttpResponsePermanentRedirect
from django.conf import settings
class SecureRequiredMiddleware(object):
    def __init__(self):
        self.paths = getattr(settings, 'SECURE_REQUIRED_PATHS')
        self.enabled = self.paths and getattr(settings, 'HTTPS_SUPPORT')

    def process_request(self, request):
        if self.enabled and not request.is_secure():
            for path in self.paths:
                if request.get_full_path().startswith(path):
                    request_url = request.build_absolute_uri(request.get_full_path())
                    secure_url = request_url.replace('http://', 'https://')
                    print self.paths, request_url, secure_url
                    return HttpResponsePermanentRedirect(secure_url)
        return None

瞧!重定向所需的任何基本 URL。

【讨论】:

    猜你喜欢
    • 2012-08-01
    • 2014-08-25
    • 2022-06-24
    • 2016-05-14
    • 2014-12-17
    • 2017-08-25
    • 2014-08-15
    • 2018-07-08
    • 1970-01-01
    相关资源
    最近更新 更多