(Сразу скажу на локалхосте идеально работает)
Я сделал конфигурацию для своего s3 bucket, медиафайлов Django и сервера Nginx.
Это работало, картинки загружались и показывались, но через несколько часов уже не работает ...
Не знаю, имеет ли это значение, но я создал bucket policy s3 для action "getObject" с условием, что запрос должен иметь заголовок User-Agent с секретной строкой, например:
curl -I some.url -H "User-Agent: dog"
My Django AWS Configuration (django_storages):
AWS_ACCESS_KEY_ID = 'my_access'
AWS_SECRET_ACCESS_KEY = 'my_private'
AWS_STORAGE_BUCKET_NAME = 'diasmart-media-static'
S3_REGION = 'eu-north-1'
AWS_S3_CUSTOM_DOMAIN = f'https://s3-{S3_REGION}.amazonaws.com/{AWS_STORAGE_BUCKET_NAME}'
AWS_S3_SIGNATURE_VERSION = 's3v4'
AWS_S3_FILE_OVERWRITE = False
AWS_DEFAULT_ACL = None
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
# Static and media
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'assets')
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static')
]
MEDIA_URL = '/media/'
My Nginx config
location /media {
resolver 8.8.8.8;
limit_except GET {
deny all;
}
set $aws_bucket "diasmart-media-static";
set $aws_endpoint "s3-eu-north-1.amazonaws.com";
set $aws_custom_secret "for_example_dog";
proxy_set_header User-Agent $aws_custom_secret;
rewrite ^/media/(.*)$ /$aws_bucket/$1 break;
proxy_buffering off;
proxy_pass https://$aws_endpoint;
}
Когда я загружаю фотографии со страницы администратора Django, ошибок нет, но изображения не отображаются.
А мой s3 bucket пустой...