Psycopg2 NotNullViolation на колонке "ip" для системы Django/Gunicorn/Nginx

У меня есть система Django, в которой gunicorn размещено динамическое содержимое, а nginx - статическое, nginx передаваемое gunicorn по мере необходимости через сокет Unix.

Каждый запрос, требующий статического содержимого, выдает ошибку, как показано ниже. Это происходит потому, что запрос приходит с сокета Unix, а не через IP? Как мне это исправить? Быстрый "гугл" не помог, но возможно я еще не нашел правильный вопрос :-(.

django.db.utils.IntegrityError: null value in column "ip" violates not-null constraint
DETAIL:  Failing row contains (48, 302, GET, /, 2022-05-25 07:51:28.855717+00, f, f, null, , Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KH..., en-GB,en;q=0.9,en-US;q=0.8,mt;q=0.7, null).

Спасибо за любые предложения.

Вот конфигурация NGINX с использованием сокета Gunicorn:

server {
    listen 80;
    server_name YOUR_IP_OR_DOMAIN;

    location = /favicon.ico { access_log off; log_not_found off; }
    location /static {
        root WHERE YOUR STATIC FOLDER IS, DO NOT INCLUDE STATIC FOLDER IN THIS PATH;
    }

    location / {
        include proxy_params;
        proxy_pass http://unix:/run/gunicorn.sock; <<<<<<====== HERE IS YOUR SOCKET FILE, I WILL EXPLAIN ITS CONTENT BELOW
    }
    client_max_body_size 100M; <= this is just something I added to not have timeout issues if the user uploads large files, you don't have to have this line

}

Gunicorn:

sudo nano /etc/systemd/system/gunicorn.service:

[Unit]
Description=gunicorn daemon
After=network.target

[Service]
User=sammy
Group=www-data
WorkingDirectory=/home/sammy/myproject
ExecStart=/home/sammy/myproject/myprojectenv/bin/gunicorn --access-logfile - --workers 3 --bind unix:/home/sammy/myproject/myproject.sock myproject.wsgi:application

[Install]
WantedBy=multi-user.target

После сохранения служебного файла:

sudo systemctl start gunicorn
sudo systemctl enable gunicorn

Вы можете проверить работу сокета, набрав : sudo systemctl status gunicorn

Вернуться на верх