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