Как настроить псевдоним в Nginx
Я развернул приложение django с помощью Digital ocean plateform. Когда nginx обслуживал статические файлы через roots
, все работало нормально. Но как только я установил boto3 and Django_storage
и перешел на alias
, nginx перестал обслуживать статические файлы. Я видел, что подобный вопрос уже задавался, но я все еще не понимаю, почему статические файлы не обслуживаются. После запуска python manage.py collectstatic
статические файлы появились в папке в digital ocean space, но статические файлы не обслуживаются в браузере. Структура моего проекта выглядит следующим образом:
$myprojectdir/
myproject/
settings.py
static/
manage.py
...
settings.py
AWS_ACCESS_KEY_ID = '***'
AWS_SECRET_ACCESS_KEY = '***'
AWS_STORAGE_BUCKET_NAME = '***
AWS_S3_ENDPOINT_URL = '***'
AWS_S3_OBJECT_PARAMETERS = {
'CacheControl': 'max-age=86400',
}
AWS_LOCATION = '***'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static'),
]
STATIC_URL = 'https://%s/%s/' % (AWS_S3_ENDPOINT_URL, AWS_LOCATION)
STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
sudo vim /etc/nginx/sites-available/myproject
server {
server_name domain;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
alias /home/sammy/myprojectdir/;
}
location / {
include proxy_params;
proxy_pass http://unix:/run/gunicorn.sock;
}
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/api.flolog.co/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/api.flolog.co/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
if ($host = domain) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
server_name domain;
return 404; # managed by Certbot