nginx problema com arquivos estáticos servindo

1

Ok, então eu quis experimentar o nginx e durante a configuração do meu aplicativo Django através do FastCGI eu encontrei um problema. FastCGI está rodando ok mas arquivos estáticos me deram 404. Aqui está minha configuração:

server {
 listen   80;
 server_name  localhost;
 access_log  /var/log/nginx/default.access.log;


 location /static/public {
  autoindex on;
  index index.html;
  root /home/daniels/djangoapp/public;
 } 

 location / {
  include /etc/nginx/fastcgi_params;
  fastcgi_pass unix:/home/daniels/djangoapp/djangoapp.sock;
 }

 # redirect server error pages to the static page /50x.html
 #
 #error_page   500 502 503 504  /50x.html;
 #location = /50x.html {
 # root   /var/www/nginx-default;
 #}
}

Qualquer coisa que eu tente acessar como link dá um sinal de 404 ex: link que está em /home/daniels/djangoapp/public/css/style.css dá 404

Alguma ideia do que está errado?

LE:

2010/02/20 22:31:42 [error] 3411#0: *3 open() "/home/daniels/djangoapp/public/img/static/public/img/background.jpg" failed (2: No such file or directory), client: 10.0.2.2, server: localhost, request: "GET /static/public/img/background.jpg HTTP/1.1", host: "127.0.0.1"

Parece que ele anexa a diretiva /static/public part from location à raiz

LE2:
Ok, eu realmente sinto muito sobre os erros de digitação, mas isso foi feito quando eu copio & colou o log e editou o nome do aplicativo. O que parece acontecer é que /static/public i tem raiz definida como /home/daniels/djangoapp/public , então http://127.0.0.1/static/public/test.jpg i esperava que o nginx procurasse o arquivo em /home/daniels/djangoapp/public/test.jpg , mas em /home/daniels/djangoapp/public/static/public/test.jpg
Parece que acrescenta um /static/public extra ao caminho.

    
por daniels 20.02.2010 / 19:24

4 respostas

8

Corrigido usando isto:

location /static/public/ {
    alias /home/daniels/neasoferul/public/;
}
    
por 21.02.2010 / 17:52
1

Acho que o Nginx associa regras na ordem inversa: tente colocar a parte / static / public abaixo da / rule.

Eu tenho essa configuração, que funciona bem:

# proxy to Apache 2 and mod_python
location / {
    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_pass http://wsgi;
}
# catch any weird erroneous media locations - it's a sub domain
location /media/ {
    root   /var/www/sites/mysite/static;
}
    
por 21.02.2010 / 15:23
0

Supondo que você não digitou sytle.css na URL, mas sim style.css, ative o log de erros: link e ver qual caminho ele está tentando acessar.

    
por 20.02.2010 / 19:57
0

Você deve colocar seu conteúdo estático em seu próprio subdomínio. É mais fácil gerenciar e expandir mais tarde.

    
por 20.02.2010 / 20:15

Tags