Назад | Перейти на главную страницу

Django не может найти статические файлы, обслуживаемые nginx

Я знаю, что это действительно глупый вопрос, но я не могу найти никакого решения, несмотря на то, что считаю проблему тривиальной.

У меня есть приложение django, развернутое с помощью Gunicorn. Статические файлы обслуживаются сервером nginx со следующим URL: myserver.com/static/admin/css/base.css. Однако мое приложение django продолжает искать статические файлы в myserver.com:8001/static/admin/css/base.css и, очевидно, не работает (404).

Я не знаю, как это исправить. Это проблема django или nginx? Вот мой файл конфигурации nginx:

server {
    server_name myserver.com;

    access_log off;

    location /static/ {
        alias /home/myproject/static/;
    }

    location / {
        proxy_pass http://127.0.0.1:8001;
        proxy_set_header X-Forwarded-Host $server_name;
        proxy_set_header X-Real-IP $remote_addr;
        add_header P3P 'CP="ALL DSP COR PSAa PSDa OUR NOR ONL UNI COM NAV"';
    }
}

Спасибо за помощь !

Сначала убедитесь, что в вашем settings.py отключена отладка.

DEBUG = False

Проверьте свой путь к статическим файлам и URL-адрес (например,)

STATIC_URL = '/ статический /'

STATICFILES_DIRS = {"/ home / myproject / static /",} `

Определите свой статический URL-адрес в nginx (ex):

location /static/ { alias /home/myproject/static/; expires 1d; }

Я не знаю, почему у вас это в конфигурации. Ничего не делает.

        proxy_set_header X-Forwarded-Host $server_name;

В любом случае, вы не передаете Host заголовок, который является наиболее вероятной причиной, по которой я могу думать о том, почему ваши URL-адреса искажаются.

Попробуйте установить это:

        proxy_set_header Host $http_host;

Проблема не в django, а в конфигурации прокси-сервера nginx

Проблема очень похожа на эту: (я вставляю ссылку напрямую, поскольку это внутренняя ссылка на serverfault, не хочу дублировать ответы)

Удаление порта из перенаправления nginx

Может, даже добавив proxy_redirect off; к location конфигурация делает свое дело.