2011-10-12 75 views
3

我正在尋找使用NGINX來處理API版本控制。我認爲這將是這樣簡單來處理髮送的業務到不同的網址:NGINX API版本控制技術

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 /。那是對的嗎?總之,定位方法不起作用。我的語法關閉了嗎?

謝謝!

回答

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

+0

^〜不是正則表達式的位置,它是一個不會被正則表達式位置覆蓋的前綴位置。您在該位置的評論也是如此。 – kolbyjack

+0

@kolbyjack:好點,我編輯了答案來反映它。 – VonC

+0

「location ^〜/1.0/」和「location = /1.0/」(OP的配置沒有「*」)是非常相同的事情。 – Dayo