Django MEDIA_URL returns http 而不是 https

Django MEDIA_URL returns http instead of https

我正在使用 Django 2.2.xDRF.

我有一个模型 FileField

file = models.FileField(upload_to=get_media_upload_path)

文件正在上传,但在访问 obj.file 时,它给出 URL 而没有 HTTPS

http://example.com/media/image.jpg

我希望它是

https://example.com/media/image.png

重定向已在 nginx 配置中设置。但我想要 URL 和 https.

的响应

设置

MEDIA_URL = '/media_/'
MEDIA_ROOT = os.path.join(os.path.dirname(BASE_DIR), 'static_cdn', 'media_root')

首先,确保 Nginx 正在发送 X-Forwarded-Proto header,它应该设置为:

proxy_set_header X-Forwarded-Proto https;

然后在您的 Django 设置中添加以下内容:

USE_X_FORWARDED_HOST = True
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')

通过这种方式,您将指示 Django 使用代理传递的 proto。