我希望使用NGINX来处理API版本控制。我认为处理将流量发送到不同的URL会如此简单:
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 /。那是对的吗?无论如何,位置方法不起作用。我的语法是否关闭?
谢谢!
答案 0 :(得分:3)
确保这不是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。