1. 程式人生 > >Nginx通過請求的URL做定向路由策略

Nginx通過請求的URL做定向路由策略

應用有一個場景是需要根據url中"&_router=10.0.0.1"引數指定的機器轉發到相應機器上做處理,看了一下Nginx文件,發現可以通過內嵌變數$arg_來完成,比較方便和靈活,程式碼如下:

1 2 3 4 5 6 7 8 9 10 11 location / { if ( $arg__router = 10.0.0.1 ){ proxy_pass http://10.0.0.1:8080; break; } if ( $arg__router = 10.0.0.2 ){ proxy_pass http://10.0.0.2:8080; break; } proxy_pass http:
//bakend; }

完成上述配置後,Nginx接收到"/api/start.do?run=ok&_router=10.0.0.1"的請求就會把它轉發到"http://10.0.0.1:8080"這臺機器處理,從而實現根據url中的制定引數做定向策略路由。還可以根據url其他引數來做不同的策略,比如:"/api/start.do?run=ok&_type=app"

1 2 3 4 5 6 7 8 9 10 11 location / { if ( $arg__type = app ){ proxy_pass http://apphost; break; } if
 ( $arg__type = game ){ proxy_pass http://gamehost; break; } proxy_pass http://bakend; }

那麼定向路由做好後,開始配置負載和容災,拿apphost為例:

1 2 3 4 5 upstream apphost { server 10.1.1.1:8080;        #1 server 10.1.1.2:8080;        #2 server 10.1.1.3:8080 backup; #3 }

1、2號伺服器承擔日常請求流量,當1、2號伺服器全都不可用時3號伺服器再處理請求。backup的作用是平時不參與負載,只有當組內沒有其它可用成員時才會接受請求。