MalikDeveloper2077
@MalikDeveloper2077

Почему Django + AWS & Nginx в продакшене не работает?

На localhost, моя AWS настройка работает и все медиа файлы хранятся и загружаются, а также берутся из S3 bucket.

settings.py
AWS_ACCESS_KEY_ID = 'some_key'  
AWS_SECRET_ACCESS_KEY = 'F'  
AWS_STORAGE_BUCKET_NAME = 'my_bucket'  
AWS_S3_SIGNATURE_VERSION = 's3v4'  

AWS_S3_FILE_OVERWRITE = False  
AWS_DEFAULT_ACL = None  
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'


Это все работает и ссылка картинки выглядит так:
CAUgk.png

Далее я задеплоил проект на Nginx сервере
И после этого ссылка на картинку выглядит так:
5vUiY.png

То есть тут уже картинка берется не с амазона, а из локальной папки медиа (там ее нет и соответственно изображение не показывается):
K8VUb.png

Nginx конфигурация:
server {
        listen 80 default_server;
        listen [::]:80 default_server;
        root /var/www/html;

        index index.html index.htm index.nginx-debian.html;

        server_name _;

        /* HERE THE PATH TO MY AWS BUCKET
        ================================*/
        location /media  {
                proxy_pass https://diasmart-media-static.s3.amazonaws.com/;  // diasmart-media-static это bucket name
        }
        /* ============END============= */

        location /static {
                alias /root/DiaStore/src/assets;
        }

        location / {
                proxy_pass http://127.0.0.1:8001;
                proxy_set_header X-Forwarded-Host $server_name;
                proxy_set_header X-Real-IP $remote_addr;
                add_header P3P 'CP="ALL DSP COR PSAa PSDa OUR NOR ONL UNI COM NAV"';
                add_header Access-Control-Allow-Origin *;
        }
}


Не знаю в чем тут дело, помогите с решением
  • Вопрос задан
  • 195 просмотров
Пригласить эксперта
Ответы на вопрос 1
Viji
@Viji
Associate DevOps Engineer
Привет, NGINX работает на EC2 ? Если так, то создай роль в Амазон IAM для EC2 инстанс с read permission на этот bucket. После этого при заходе на nginx сервер, через ssh, ты должен выполнять команду curl и картинка должна скачиваться без всяких AWS_ACCESS_KEY.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы