我使用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实际上并没有提供静态文件,即使我注释掉了位置块,文件也会从某些东西中获得服务.我在Nginx日志中看到200,在uWsgi日志中看到200.你怎么知道哪一个提供静态文件?我想烧瓶应用程序也可以为他们服务?
/ opt / test / client / app / components /当然存在,并且对其他人可读.有没有办法迫使uwsgi不处理这些请求?
最佳答案
你确实需要一个位置.但这并不是Nginx不提供静态文件的原因.
问题是您忘记在服务器块中指定根指令.因此,Nginx使用其编译的默认值,这是系统相关的,几乎可以肯定不是您的Web应用程序所在的位置.因此,包括静态文件在内的所有请求都向uWSGI上游发送.
要解决此问题,请设置指向应用程序静态资源的根指令.
server {
root /srv/www/testapp;
或者,如果子目录中只有静态文件,则可以使用位置和别名as shown in the uWSGI documentation指定.
location /static {
alias /srv/www/testapp/static;
}