404 erro para ativos estáticos quando o cache do navegador é implementado no nginx

1

Eu tenho atualmente um arquivo nginx.conf que se parece com isso (com colchetes substituindo dados sensíveis):

worker_processes  3;

events {
    worker_connections  1024;
}

http {
    access_log  [/...];
    error_log   [/...]  crit;

    include mime.types;
    sendfile on;

    server {
        server_name [...] [...];
        return 301 [...] $request_uri;
    }

    server {
        listen 127.0.0.1:[...];
        root [/...];

        location / {
            include uwsgi_params;
            uwsgi_pass [.../uwsgi.sock];
        }
    }
}

Se eu adicionar a seguinte linha após a cláusula {...} de local existente, conforme sugerido aqui , carregar o site produzirá erros" 404 não encontrados "para recursos de imagem, CSS e js:

location ~*  \.(jpg|jpeg|png|gif|ico|css|js)$ {
    expires 1d;
}

Como posso implementar o cache do navegador sem causar o problema "404"?

    
por Boa 23.03.2017 / 17:07

2 respostas

3

É um problema simples de suas declarações de localização estarem fora de ordem.

Você escreveu que colocou a cláusula de localização de arquivo estático após o bloco location / {} . Isso significa que seus arquivos estáticos serão verificados primeiro. Como seu soquete uwsgi não pode encontrar os caminhos de arquivo, ele retorna 404.

O que você quer será mais parecido com isso.

http {
    [..]

    server {
        server_name example.com;
        return 301 ^ $request_uri;
    }

    server {
        listen localhost;
        root /path/to/webroot/;

        location ~*  \.(jpg|jpeg|png|gif|ico|css|js)$ {
            expires 1d;
        }
        location / {
            include uwsgi_params;
            uwsgi_pass [...];
        }
    }
}

As pessoas boas da Digital Ocean têm um excelente guia explicando como isso funciona. Eu recomendo lê-lo.

    
por 23.03.2017 / 17:24
0

A solução que resolveu meu problema foi colocar a cláusula uwsgi_pass [.../uwsgi.sock]; dentro de cada bloco location {...} .

    
por 24.03.2017 / 16:53

Tags