我希望使用NGINX来处理API版本控制。我认为处理将流量发送到不同的URLS会很简单:
location = /1.0/* {
root = /var/www/html/version_1.0/public;
}
location = /1.1/* {
root = /var/www/html/version_1.1/public;
}然后,我会编写某种形式的重写,从URL中去掉1.0/或1.1/。对吗?无论如何,定位方法不起作用。我的语法关闭了吗?
谢谢!
发布于 2011-10-13 12:17:17
确保这不是关于matching order的
nginx首先搜索由文字字符串给出的最具体的位置,而不考虑列出的顺序。在上面的配置中,唯一的文字位置是“
/”,因为它匹配任何请求,所以它将被用作最后的手段。
然后,nginx按照配置文件中列出的顺序检查正则表达式给出的位置。第一个匹配表达式停止搜索,nginx将使用此位置。
如果没有与请求匹配的正则表达式,那么nginx将使用前面找到的最具体的文本位置。
您可以尝试a location directive,测试您想要的文字,并防止检查任何正则表达式:
location ^~ /1.0/ {
# matches any query beginning with /1.0/ and halts searching,
# so regular expressions will not be checked.
[ configuration C ]
}然后你就可以查看rewrite procedures了。
https://stackoverflow.com/questions/7747217
复制相似问题