Nginx通过请求的URL做定向路由策略

本文介绍如何使用Nginx根据URL参数进行定向路由,并配置负载均衡与容灾策略。通过内嵌变量$arg_实现灵活路由,针对不同参数值转发到特定服务器。同时,展示了如何设置备份服务器以应对主服务器故障。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

应用有一个场景是需要根据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的作用是平时不参与负载,只有当组内没有其它可用成员时才会接受请求。

本文出自 “迷彩小蜗牛” 博客,请务必保留此出处http://cycool.blog.51cto.com/2443397/1568577

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值