I have a django app on DigitalOcean droplet running using gunicorn and nginx. The site is working but the static files are giveing 404. Below is my ‘/etc/nginx/sites-available/django-project’ file:
server {
#listen 80 default_server;
#listen [::]:80 default_server ipv6only=on;
server_name aakar.in;
root /usr/share/nginx/html;
index index.html index.htm;
#access_log off;
client_max_body_size 4G;
#server_name _;
keepalive_timeout 5;
location /media {
alias /home/django/django_project/django_project/media;
}
location /static/ {
alias /home/django/django_project/django_project/static;
}
location / {
proxy_pass http://127.0.0.1:9000;
proxy_redirect off;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
add_header P3P 'CP="ALL DSP COR PSAa PSDa OUR NOR ONL UNI COM N$
}
}
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!
These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.
Heya,
To anyone stumbling upon this, here is a full revisited answer.
To configure Nginx to serve static files and media files for a Django web application, you’ll need to make sure your Django project is correctly configured for serving static and media files, and then set up Nginx to handle these files efficiently. Here are the steps to achieve this:
settings.py
file), make sure you have the following configurations set correctly:Ensure that you’ve also added the following line to your project’s
urls.py
to serve media files during development:/etc/nginx/sites-available/
directory. Replaceyour_project_name
with a meaningful name for your project:Save the file and exit the text editor.
www-data
on Ubuntu) has read access to your static and media directories. You can adjust permissions with the following commands:That’s it! Nginx should now be correctly configured to serve your Django project’s static and media files. Make sure to replace placeholders like
your_domain.com
,/path/to/your/static/root
,/path/to/your/media/root
, and/path/to/your/project.sock
with your actual values.As long as the path you have listed is correct this should work. I would recommend checking to ensure that the files and directory will allow the www-data user (which nginx is running as) is able to view files in that location. You may need to adjust permissions or ownership (especially if you uploaded them as root or this home directory is not set up to allow access by non-root users other than the django user).