Django MEDIA_URL returns http 而不是 https
Django MEDIA_URL returns http instead of https
我正在使用 Django 2.2.x 和 DRF.
我有一个模型 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。
我正在使用 Django 2.2.x 和 DRF.
我有一个模型 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。