Я знаю, что это действительно глупый вопрос, но я не могу найти никакого решения, несмотря на то, что считаю проблему тривиальной.
У меня есть приложение 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
конфигурация делает свое дело.