Nginx根据Http头字段来分发请求

有两套客户端,共用了同一个接口服务,通过Http方式交互,现在需要将两套客户端对应的接口服务分离。由于请求的uri完全一致,调用的接口也完全一致,只有Http头里面有一个字段,用来区分是来自哪个客户端的请求。于是考虑根据这个Http头字段来进行请求分发,不同的客户端对应到不同的服务端。

写了个简单的配置示例(nginx.conf),证实该方案是可行的:

location / {
        	if ($http_t = "163"){
        		proxy_pass   http://163.com;
        	}
        	if ($http_t = "baidu"){
        		proxy_pass   http://baidu.com;
        	}
        	
            root   html;
            index  index.html index.htm;
        }

其中$http_为nginx配置文件中获取Http头字段的默认前缀,例如Http头中有个字段为t,那么$http_t就为该字段对应的值。当该值为163的时候,直接跳转到163网站,当该值为baidu的时候,直接跳转到百度网站。

处理完该事情后,对Http JSON接口协议的制定也有了一些新的认识,对于全局性的字段,建议放到Http头中进行传递,因为不需要解析包体就可以对该请求做一些简单分析和处理。对于接口相关性的字段,可以放在JSON包体中进行传递。

发表评论

电子邮件地址不会被公开。 必填项已用*标注