Web-server configuration examples

nGINX

Django settings:

STORAGES = {
    "default": {
        "BACKEND": "django.core.files.storage.FileSystemStorage",
    },
    "staticfiles": {
        "BACKEND": "django.contrib.staticfiles.storage.StaticFilesStorage",
    },
    "privates": {
        "BACKEND": "django.core.files.storage.FileSystemStorage",
        "OPTIONS": {
            "location": "/path/to/files/on/disk/private_media/",
            "base_url": "/private-media/",
        },
    },
}

SENDFILE_BACKEND = "django_sendfile.backends.nginx"
SENDFILE_ROOT = "/path/to/files/on/disk/private_media/"
SENDFILE_URL = "/private-media/"

Nginx configuration:

server {
    listen app.example.com 443 http2 ssl;

    location / {
      # usual proxy directives
    }

    location /private-media/ {
        internal;  # crucial to prevent direct access!
        alias /path/to/files/on/disk/private_media/;
    }
}