Stati c Ошибка носителя с NGINX и Gunicorn - PullRequest
1 голос
/ 30 мая 2020

Здравствуйте и спасибо, что нашли время прочитать этот запрос о помощи.

Я устанавливаю веб-приложение под названием Netbox , которое построено на Django. Базовый c Gunicorn имеет внешний вид NGINX в довольно простой ie конфигурации .

Проблема, с которой я столкнулся, заключается в том, что веб-приложение сообщает, что не может загрузить ни один из файлов c stati , и я могу подтвердить, что получаю 404 для этих запросов.

Я подтвердил, что могу просматривать правильные файлы в пути /static/, указанном в NGINX пути /opt/netbox/netbox/static, а также правильно установлены разрешения.

Так как это веб-приложение Django, я выполнил простой тест со встроенным тестовым веб-сервером, и все файлы stati c отображаются правильно; это почти наверняка проблема между Gunicorn и моей конфигурацией NGINX.

nginx.conf

server {
    listen 443 ssl;

    # CHANGE THIS TO YOUR SERVER'S NAME
    server_name netbox.example.com;

    ssl_certificate /etc/ssl/certs/netbox.crt;
    ssl_certificate_key /etc/ssl/private/netbox.key;

    client_max_body_size 25m;

    location /static/ {
        alias /opt/netbox/netbox/static/;
    }

    location / {
        proxy_pass http://127.0.0.1:8001;
        proxy_set_header X-Forwarded-Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

server {
    # Redirect HTTP traffic to HTTPS
    listen 80;
    server_name _;
    return 301 https://$host$request_uri;
}

gunicorn.py

bind = '127.0.0.1:8001'
workers = 5
threads = 3
timeout = 120
max_requests = 5000
max_requests_jitter = 500

сообщение об ошибке при просмотре http://localhost: 8001 /

Я получил те же результаты при следующих настройках:

  • Ubuntu 18.04 (Azure)
  • Ubuntu 19.10 (локальная виртуальная машина)
  • Ubuntu 20.04 ( локальная виртуальная машина)
  • Centos 8.1 (Azure)
  • та же ошибка при использовании альтернативного метода настройки Apache

Буду признателен за любые идеи где я могу go проверять такие вещи, как разрешения или проверять журналы.

1 Ответ

0 голосов
/ 30 мая 2020

Попробуйте использовать root вместо псевдонима. Nginx документация рекомендует использовать root, когда location совпадает с последней частью значения директивы. Я думаю, чтобы избежать дублирования $ uri, / stati c в вашем примере при использовании псевдонима.

Так что попробуйте это:

    location /static/ {
        root /opt/netbox/netbox;
    }
...