nginx + uwsgi - o que está servindo arquivos estáticos?

4

Estou usando o nginx como um proxy para alguns aplicativos de frascos, com o uwsgi como o middleware. Aqui está minha configuração nginx para um aplicativo de teste.


server {
    listen      80;
    server_name test.myapp.com www.test.myapp.com;
    charset     utf-8;
    client_max_body_size 250M;
    location / { try_files $uri @testapp; }

location @testapp {
    include uwsgi_params;
    uwsgi_pass unix:/tmp/testapp_uwsgi.sock;
}

location /forecaster/components/ {
    alias /opt/test/client/app/components/;
}

Tenho certeza de que o nginx não está servindo os arquivos estáticos, mesmo que eu comente o bloco location , os arquivos estão sendo recebidos de alguma coisa. Eu vejo 200 no log do nginx, assim como 200 nos logs do uWsgi. Como você pode dizer qual está servindo os arquivos estáticos? Eu suponho que o aplicativo do frasco poderia estar servindo-os também?

/ opt / test / client / app / components / existe e pode ser lido por outros. Existe alguma maneira de forçar o Uwsgi a não lidar com esses pedidos?

    
por reptilicus 27.01.2014 / 18:35

1 resposta

8

Você precisa de um location . Mas não é por isso que o nginx não está servindo seus arquivos estáticos.

O problema é que você esqueceu de especificar uma diretiva root em seu bloco server . Então o nginx usa seu padrão compilado, que é dependente do sistema e quase certamente não está onde seu aplicativo da web está localizado. Assim, todas as solicitações all , incluindo arquivos estáticos, vão para o upstream para o uWSGI.

Para corrigir o problema, defina uma diretiva root apontando para os recursos estáticos do seu aplicativo.

server {
    root /srv/www/testapp;

Ou, se você tiver apenas arquivos estáticos em subdiretórios, poderá especificar com location e alias como mostrado na documentação do uWSGI .

location /static {
    alias /srv/www/testapp/static;
}
    
por 27.01.2014 / 18:40