OpenResty配置Nginx根据body中的Json参数指定代理服务

OpenResty配置Nginx根据body中的Json参数指定代理服务

需求:

因考虑应对高并发,项目准备使用Nginx代理多服务地址实现负载均衡,多台服务器中有一台服务器为高性能服务器,所以需要某些复杂逻辑接口单独请求这个高性能服务器,其他请求走轮询配置服务器。

实现思路:

因为项目暴露请求全部是POST请求,参数采用Json格式传递,原生Nginx无法对请求中的Json参数进行处理,故使用OpenResty的Lua脚本配置完成。

OpenResty下载地址:http://openresty.org/cn/download.html

下载完直接解压即可,文件夹内嵌的有Nginx,因为我的需求只是用到Nginx,所以只配置Nginx,其他的没做研究,就当作Lua环境。

Nginx配置如下:

http{
...
	upstream ipBox{
		server 192.168.xxx.xxx:8092;
		server 192.168.xxx.xxx:8092;
	}
    server {
        listen       81;
        server_name  localhost;
		lua_need_request_body on;
		location / {
			--默认走ipBox轮询
			set $target_proxy ipBox;
			--处理请求函数,别用成content_by_lua_block了,这个是处理响应
			access_by_lua_block {
				--获取body数据
				ngx.req.read_body()
				local args = ngx.req.get_body_data()
				--引入json,把json字符串转json对象
				local json = require "cjson"
				local json_obj = json.decode(args)
				local isMaster = json_obj.isMaster
				--ngx.say("<p>hello, world</p>",isMaster)
				-- 判断isMaster是否等于1
				if isMaster == 1 then
					-- 转发到指定的代理IP地址
					ngx.var.target_proxy = "192.168.xxx.xxx:8092"
				end
			}
			proxy_pass http://$target_proxy;
			root   html;
            index  index.html index.htm;
		}
...
}

PostMan测试配置

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值