我有一个要提供的目录结构,其中包含二进制文件和一些有关它们的 json 元信息。对于某些目录,我需要动态计算一些内容并提供这些内容。我想使用 tornado 计算并提供这些信息。
以下是一个例子:
> ls /manufacturers/*
audi/
audi.json
mercedes/
mercedes.json
> wget http://localhost/manufactures/audi.json
returns the json file using nginx static serving
> wget http://localhost/?diesel
returns a json file with manufactures that
create cars with diesel engines computed by and using tornado
答案1
如果你的用例是“如果静态文件存在则提供它们,否则将所有内容发送到 tornado”,你可以这样做try_files
:
upstream upstream_tornado {
server http://127.0.0.1:8080;
# ...or wherever
}
server {
listen 80;
server_name localhost;
root /path/to/wherever;
try_files $uri @tornado;
location @tornado {
proxy_pass http://upstream_tornado;
# Other proxy stuff e.g. proxy_set_header
}
}
答案2
您可以通过在块中查找来检查 nginx 是否?diesel
正在被调用。$arg_diesel
location = /
location = / {
if ( $arg_diesel ) {
proxy_pass http://tornado;
}
}
location = /
是不是与 相同,location /
只会location = /
对不在文件夹中的请求调用,例如/?diesel
,但不会/somepath/?diesel
,而location /
会匹配所有内容。