Для подготовки django для работы на сервере нужно поправить несколько файлов:
dganjo_project/settings.py - файл настроек самого проекта
www.conf - файл настроек nginx для сайта
/etc/systemd/system/gunicorn.service - настроим в systemd gunicorn нужен для передачи веб соединения непосредственно самому проекту

dganjo_project/settings.py:

#DEBUG = True
DEBUG = False

 

ALLOWED_HOSTS = ["192.168.0.9", "localhost", "dotty.su", "www.dotty.su"]
Forbidden (403) CSRF verification failed
CSRF_TRUSTED_ORIGINS = ['https://*.dotty.su','https://*.127.0.0.1']

www.conf:

server {
    listen       80;
    listen       443 ssl;
 
    server_name  www.dotty.su dotty.su;
    location = /favicon.ico {
        access_log off;
        log_not_found off;
    }  # указываем серверу игнорировать проблемы, связанные со значком веб-страницы

 
    location ~ /.well-known {
        root /usr/share/nginx/html;
        allow all;
    }
 
    if ($scheme = 'http') {
        return 301 https://$host$request_uri;
    }
 #ssl settings:
    ssl_certificate     .../fullchain.pem;
    ssl_certificate_key .../privkey.pem;
    ...

  # log
    error_log /var/log/nginx/error-dotty.log;
    access_log /var/log/nginx/access-dotty.log main;

  # путь к файлам сайта
    root /var/www/html/dotty.su;
 

# задаем параметр перенаправления всех запросов на созданный gunicorn socket

#    location / {                
#        include proxy_params;
#        proxy_pass http://unix:/run/gunicorn.sock;

#    }

    location / {                
        # Адрес и порт бэкенда (например, Gunicorn)

                proxy_pass http://172.17.0.1:8000; # адрес доступный из докера
        # Передача реального хоста в Django
        proxy_set_header Host $http_host;

        # IP-адрес клиента
        proxy_set_header X-Forwarded-For $remote_addr;

        # Исходный протокол (HTTP/HTTPS)
        proxy_set_header X-Forwarded-Proto $scheme;

        # Максимальный размер загружаемых данных
        client_max_body_size 20m;
    }

    location /static/ {
        try_files $uri $uri/ =404;  # Возвращает 404, если файл не найден
    }

    location ~* ^.+\.(jpg|jpeg|gif|png|css|zip|tgz|gz|rar|bz2|pdf|tar|js|webm)$ {
           expires modified +1w;
    }
}

/etc/systemd/system/gunicorn.service:

[Unit]
Description=gunicorn daemon
#Requires=gunicorn.socket
After=network.target

[Service]
User=user
Group=user_group
WorkingDirectory=/django/admin

#ExecStart=/django/venv/bin/gunicorn --workers 5 --bind unix:/run/gunicorn.sock admin.wsgi:application
ExecStart=/django/venv/bin/gunicorn --workers 5 --bind 0.0.0.0:8000 admin.wsgi:application



[Install]
WantedBy=multi-user.target

 

Настройка Nginx и Gunicorn для Django-проекта: от установки Python до SSL

Настройка nginx для react и django rest api

Forbidden (403) CSRF verification failed

Как запустить сайт с Docker, Nginx и Certbot: полный гайд

Docker-compose для создания веб-сервера