У меня есть структура каталогов, которую я хочу обслуживать, которая содержит файлы как двоичные и некоторую метаинформацию о них как json. для некоторых каталогов мне нужно вычислять некоторые вещи на лету и обслуживать их. Я хочу вычислить и передать эту информацию с помощью торнадо.
Вот пример:
> 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
Вы можете проверить с помощью nginx, ?diesel
вызывается, ища $arg_diesel
в location = /
блок.
location = / {
if ( $arg_diesel ) {
proxy_pass http://tornado;
}
}
location = /
является не так же, как location /
. location = /
будет вызываться только для запросов, которых нет в папке, такой /?diesel
, но нет /somepath/?diesel
тогда как location /
будет соответствовать всему.
Документация: http://nginx.org/r/location
Если ваш вариант использования - «обслуживать статические файлы, если они существуют, в противном случае отправлять все в торнадо», вы можете сделать это с помощью 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
}
}