經過nginx重寫(rewrite)將老版本api接口轉發到新版本接口上

問題:nginx

項目開始,nginx是經過匹配control來轉發的,後面隨着業務不停增長,每次都須要修改nginx,甚是麻煩,因此決定爲不一樣的服務取一個名稱——服務域名稱,而後咱們經過匹配服務域名稱的模式就解決這個不一樣修改配置的問題了。web

剛開始的nginx配置:api

location ~* /api/AppVersion {
    proxy_pass http://192.168.1.88:8888;
}

目前指望的配置(serviceName後面包含n多控制器):安全

location ~* /api/Business {
    proxy_pass http://192.168.1.88:8888;
}

若是隻是web站點,這麼作就差很少ok了,可是咱們有一個app,老版本須要升級,只能調用第一中接口,可是咱們新版本的接口都加上了serviceName/api/Business/AppVersion),目前想到兩種方式:app

一、提供新老版本的api接口;
二、經過nginx配置重寫(從新轉發)——當時不會,只是知道nginx強大,應該可以支持;code

因此查找了一下,以做備忘:接口

location ~* /api/AppVersion/GetVersion {
    rewrite ^ http://192.168.1.88:8888/api/Business/AppVersion/GetVersion;
}

那麼當你調用老接口/api/AppVersion/GetVersion的時候,nginx會自動幫你轉發到新接口上/api/Business/AppVersion/GetVersion,也不須要修改代碼,安全方便;域名

相關文章
相關標籤/搜索