NGINX API版本控制技术

时间:2011-10-12 22:12:45

标签: api nginx rewrite versioning

我希望使用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 /。那是对的吗?无论如何,位置方法不起作用。我的语法是否关闭?

谢谢!

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