É 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.