O Django não consegue encontrar arquivos estáticos servidos pelo nginx

1

Eu sei que esta é uma pergunta realmente desagradável, mas não consigo encontrar nenhuma solução, apesar de achar o problema trivial.

Eu tenho um aplicativo django implementado com o gunicorn. Os arquivos estáticos são atendidos pelo servidor nginx com o seguinte url: myserver.com/static/admin/css/base.css . No entanto, meu aplicativo django continua procurando os arquivos estáticos em myserver.com:8001/static/admin/css/base.css e está obviamente falhando (404).

Eu não sei como consertar isso. É um problema de django ou nginx? Aqui está o meu arquivo de configuração 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"';
    }
}

Obrigado pela ajuda!

    
por Simon 09.06.2014 / 04:09

3 respostas

2

Eu não sei porque você tem isso na sua configuração. Não faz nada.

        proxy_set_header X-Forwarded-Host $server_name;

De qualquer forma, você não está passando o cabeçalho Host , que é o motivo mais provável pelo qual seus URLs estão sendo desconfigurados.

Tente definir isso:

        proxy_set_header Host $http_host;
    
por 09.06.2014 / 04:32
2

Primeiro assegure-se de que você tenha debug desativado em seu settings.py

DEBUG = False

Verifique seu caminho para arquivos estáticos e URL (ex.)

'STATIC_URL =' / static / '

STATICFILES_DIRS = {   "/ home / myproject / static /" } '

Defina seu URL estático em nginx (ex):

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

    
por 09.06.2014 / 07:18
0

Não é problema de django, mas configuração de proxy nginx

O problema é bastante semelhante a este: (Eu colo o link diretamente, pois é um link interno no serverfault, não quero duplicar as respostas)

Removendo porta do redirecionamento nginx

Talvez até mesmo adicionar proxy_redirect off; à configuração location seja o suficiente.

    
por 30.07.2015 / 16:39