nginx如何为子目录上的静态文件提供服务,并将其余文件传递给uwsgi?

nginx如何为子目录上的静态文件提供服务,并将其余文件传递给uwsgi?,nginx,uwsgi,Nginx,Uwsgi,我有一个目录example.com/data/,它只在根目录下提供静态内容(即example.com/data/提供静态网页,但example.com/data/file由脚本提供)。我使用uwsgi来服务静态部分,并且已经设法让我的脚本自己服务内容,但是我不知道我需要什么规则来获得这种行为,因为我得到了一个“500内部服务器错误” 我当前的(非工作)配置如下所示: location = /data/ { alias /srv/data/index.html; } location /dat

我有一个目录
example.com/data/
,它只在根目录下提供静态内容(即
example.com/data/
提供静态网页,但
example.com/data/file
由脚本提供)。我使用uwsgi来服务静态部分,并且已经设法让我的脚本自己服务内容,但是我不知道我需要什么规则来获得这种行为,因为我得到了一个“500内部服务器错误”

我当前的(非工作)配置如下所示:

location = /data/ {
  alias /srv/data/index.html;
}
location /data {
  gzip off;
  include uwsgi_params;
  uwsgi_modifier1 9;
  uwsgi_pass unix:/run/uwsgi/data.sock;
}
我尝试了一些使用
try\u文件的配置,但似乎无法正常工作。我是否需要以不同方式引用其中一个目录,或者以某种方式使用try_文件和一些命名路由

编辑:感谢@Richard Smith,此配置可以工作:

location = /data/ {
  root /srv/data/;
  try_files /index.html =404;
}
location = /data {
  gzip off;
  include uwsgi_params;
  uwsgi_modifier1 9;
  uwsgi_pass unix:/run/uwsgi/data.sock;
}

错误日志中有任何条目吗?@RichardSmith有。它说“/srv/data/index.htmlindex.html”不是一个目录。但当我试图将其更改为“alias/srv/data/;”时,它直接转到了uwsgi,“alias/srv/data;”给出了403禁止(可能是因为它无法给出目录列表)。请尝试:
location=/data/{root/srv/data/;Try_files/index.html=404;