nginx + uwsgi – Qu'est-ce qui sert les files statiques?

J'utilise nginx comme proxy dans quelques applications de flasks, avec uwsgi comme middleware. Voici ma configuration nginx pour une application de test.

server { listn 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/; } 

}

Je suis certain que Nginx ne sert pas vraiment les files statiques, même si je commenter le bloc de location , les files sont servis par quelque chose. Je vois 200 dans le journal nginx, ainsi que 200 dans les journaux uWsgi. Comment pouvez-vous dire à qui sert les files statiques? Je suppose que l'application du flask pourrait aussi les servir?

/ opt / test / client / application / components / existe certainement, et est lisible pour les autres. Existe-t-il un moyen de forcer uwsgi à ne pas traiter ces requests?

Vous avez besoin d'un location . Mais ce n'est pas pourquoi nginx ne sert pas vos files statiques.

Le problème est que vous avez oublié de spécifier une directive root dans votre bloc server . Donc, nginx utilise son défaut compilé, qui dépend du système et qui n'est certainement pas là où votre application Web est située. Ainsi, toutes les requêtes, y compris pour les files statiques, vont en amont à uWSGI.

Pour corriger le problème, définissez une directive root indiquant les ressources statiques de votre application.

 server { root /srv/www/testapp; 

Ou si vous avez uniquement des files statiques dans les sous-directorys, vous pouvez spécifier ensuite avec l' location et l' alias comme indiqué dans la documentation uWSGI .

 location /static { alias /srv/www/testapp/static; }