我正在尝试让NGINX处理我的所有路由。这不会是一个巨大的REST API,因此只有几个URL可用。
/directory/api/v1/
这将是我的API的基本URL。发送给它的每个请求都应该自动触发为“REST”,如果这有意义的话。
/directory/api/v1/distance/10.95012,-5.192001/5.19288,11.21521
基本上就是其中一个网址的样子。如果我们正在进行重写规则(这是我开始使用的),我会做类似的事情:
location / {
rewrite ^/directory/api/v1/(.*)/(.*)/(.*) /directory/grab.php?method=$1&from=$2&to$3 last;
}
对于这个例子,这会很有用。我很容易就能用PHP进行真正的检查(例如,如果允许方法distance
)。但是,我也想要这样的事情:
/directory/api/v1/currentlocation/123
这样做会“破坏”rewrite ^/directory/api/v1/(.*)/(.*)/(.*)
,因为正则表达式不匹配。
最好的方法是什么?我无法弄清楚location
是如何工作的。做一些像这样的事情会很好:
location ^~ /directory/api/v1/distance/
#do something like grab.php?method=distance&from=???&to=???
}