Методы управления версиями API NGINX - PullRequest
3 голосов
/ 13 октября 2011

Я хочу использовать 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;
    }

Я бы тогда написал некоторую форму переписывания, чтобы убрать 1.0 / или 1.1 / из URL.Это верно?В любом случае, метод определения местоположения не работает.Мой синтаксис выключен?

Спасибо!

1 Ответ

3 голосов
/ 13 октября 2011

Убедитесь, что это не соответствующий порядок :

nginx сначала ищет наиболее конкретное местоположение, заданное литеральными строками, независимо от указанного порядка.В приведенной выше конфигурации единственным буквальным расположением является «/», и, поскольку оно соответствует любому запросу, оно будет использоваться в качестве последнего средства.
Затем nginx проверяет местоположения, заданные регулярным выражением, в порядке, указанном в файле конфигурации.Первое совпадающее выражение останавливает поиск, и nginx будет использовать это местоположение.
Если регулярное выражение не соответствует запросу, тогда nginx использует наиболее конкретное литеральное местоположение, найденное ранее.

Вы можете попробовать директиву местоположения , проверяя нужный литерал и не допуская проверки любого регулярного выражения:

location ^~ /1.0/ {
  # matches any query beginning with /1.0/ and halts searching,
  # so regular expressions will not be checked.
  [ configuration C ] 
}

Затем вы можете проверить процедуры перезаписи .

...