Я использую nginx в качестве прокси для пары флеш-приложений с uwsgi в качестве промежуточного программного обеспечения. Вот моя конфигурация nginx для тестового приложения.
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/;
}
}
Я почти уверен, что nginx на самом деле не обслуживает статические файлы, даже если я закомментирую location
блок, файлы обслуживаются от чего-то. Я вижу 200 в журнале nginx, а также 200 в журналах uWsgi. Как узнать, какой из них обслуживает статические файлы? Я полагаю, что приложение для фляги тоже могло их обслуживать?
/ opt / test / client / app / components / определенно существует и доступен для чтения другим пользователям. Есть ли способ заставить uwsgi НЕ обрабатывать эти запросы?
Вам нужен location
. Но не поэтому nginx не обслуживает ваши статические файлы.
Проблема в том, что вы забыли указать root
директива в вашем server
блок. Таким образом, nginx использует свое скомпилированное значение по умолчанию, которое зависит от системы и почти наверняка не там, где находится ваше веб-приложение. Таким образом, все запросы, в том числе для статических файлов, идут вверх по потоку в uWSGI.
Чтобы решить проблему, установите root
директива, указывающая на статические ресурсы вашего приложения.
server {
root /srv/www/testapp;
Или, если у вас есть только статические файлы в подкаталогах, вы можете указать их с помощью location
и alias
как показано в документации uWSGI.
location /static {
alias /srv/www/testapp/static;
}