利用nginx实现指定路由

利用nginx实现指定路由

Nginx作为负载均衡,如果后面有2台服务器,那么会均衡的打到后面的两台服务器上,如果要实现具体的用户打到指定的服务器上,就需要用到nginx配置的路由。

配置文件如下:

worker_processes  1;
events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    
    sendfile        on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    upstream zabbix {  
        server 172.16.126.241:80;  
    }

    server {
        listen       80;
        server_name  localhost;
        
        location / {
         #  if ($args ~ hostid=1 ){
         #   rewrite ^/ http://www.baidu.com;
         #  }
          
         #  if ($args ~ hostid=2 ){
         #   rewrite ^ http://www.163.com;
         # }
   
          if ( '$http_hostid' = '2'){
           proxy_pass http://172.16.121.100:8000;
            # rewrite ^/ http://www.baidu.com;
          }
          if ( '$http_hostid' = '1') {
           proxy_pass http://172.16.121.100:8001;
             # rewrite ^/ http://www.163.com;
         }
           
            proxy_pass   http://zabbix;
          }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

两种方式,第一种是通过实际情况的http参数来路由,就是如下的代码,nginx有$args全局变量,是否包含字符串hostid=1来路由。

    if ($args ~ hostid=1 ){
            rewrite ^/ http://www.baidu.com;
           }
          
           if ($args ~ hostid=2 ){
            rewrite ^ http://www.163.com;
          }

 

第二种方式,是通过header来路由,做http请求的时候,将头部里面加入一个参数hostid。Nginx的配置文件里面,通过$http_hostid来获取头部的参数进行路由。

 if ( '$http_hostid' = '2'){
           proxy_pass http://172.16.121.100:8000;
         }
          if ( '$http_hostid' = '1') {
           proxy_pass http://172.16.121.100:8001;
      }

 

在linux下用curl命令加头部做验证,命令如下

curl -H "hostid:1" http://172.16.121.100/recommend?suid=1000448033&i_page=1&i_perpage=6

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值