nginx_lua 根据传参访问不同的系统

nginx_lua 根据传参访问不同的系统1

nginx配置

server {
        listen 81;
        server_name _;
        charset utf-8;
        access_log logs/tt.access.log;

        location /dubbo1 {

		proxy_pass http://192.168.2.41:6060;

        }
        location /lua {
     	
	#	content_by_lua_block {
        # 		local mydata = require "mydata"
        # 		ngx.say(mydata.get_age("dog"))
     	#	}

		default_type 'text/html';
        	content_by_lua 'ngx.say("hello world")';
 	}

	location /test {
		default_type 'text/plain';
        	set $foo hello;

        	echo "foo: $foo";
		echo "method: $echo_request_method.";
    	}
	
	
	location /dubbo/ {
		set $service '';
           	rewrite_by_lua  '
                	local request_method = ngx.var.request_method
                    	if request_method == "GET" then
                        	local arg = ngx.req.get_uri_args()["service"] or 0
                        	ngx.var.service = arg
			elseif request_method == "POST" then
				ngx.req.read_body()
                            	local arg = ngx.req.get_post_args()["service"] or 0
                            	ngx.var.service = arg
                    	end;';
		#default_type 'text/plain';
		#echo "service: $service";
		
            
            	if ( $service != 'register') {
			echo_before_body "echo_before_body";
			echo_before_body "service: $service";
                        proxy_pass http://192.168.2.41:6060;
			echo_after_body "echo_after_body";
			echo_after_body "service: $service";
			#break;
                }
		
                #echo "aaaaa";            
            	proxy_redirect off;
            	proxy_set_header HOST $host;
            	proxy_set_header X-Real-IP $remote_addr;
            	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    	
	}

 	location /gateway {
		access_by_lua_file sbin/route.lua;
		error_page 433 = @433;
		error_page 434 = @434;
		error_page 435 = @435;
		
	}
	location @433 {
		rewrite ^/gateway(.*)$ /dubbo$1 last;
		proxy_pass http://192.168.2.41:6060;
	}
	location @434 {
		rewrite ^/ http://www.baidu.com;
	}
	location @435 {
		rewrite ^/ http://www.163.com;
	}

        error_page   500 502 503 504 404 /50x.html;
        location = /50x.html {
                root html;
        }
}

 

 

route.lua脚本

local method = ngx.var.request_method
local code = nil

-- 判断请求方式,获取code值
if method == "GET" then
	code = ngx.req.get_uri_args()["code"] or 0
elseif method == "POST" then
	ngx.req.read_body()
	code = ngx.req.get_post_args()["code"] or 0
end

-- 通过code寻找route返回码
local route = routes:get(code)
if route == nil then
	ngx.exit(routes:get("default"))
end
-- 返回码
ngx.exit(route)

 

 

 

 

===============================================

 

 

nginx_lua 根据传参访问不同的系统2

 

server {
        listen 82;
        server_name _;
        charset utf-8;
        access_log logs/ttt.access.log;
	
	
	location /demo {
		#proxy_pass http://192.168.2.41:8080/demo/demo/user/add/v1.0;
		echo ngx.req.get_post_args()["method"] ;
	}

	location /paymer {
		echo "paymer ---";
	}
	location /api {
		echo "api ---";
	}

	location = /gateway {
		set $method '';

		rewrite_by_lua  '
			local request_method = ngx.var.request_method
                	if request_method == "GET" then
				-- local Args, err = ngx.req.get_post_args()
                        	local arg = ngx.req.get_uri_args()["method"] or 0
                        	ngx.var.method = arg
				-- ngx.var.args = Args
			elseif request_method == "POST" then
				ngx.req.read_body()
                		local method = ngx.req.get_post_args()["method"] or 0
                		
                        	ngx.var.method = method
                        	
                	end;
			if ngx.var.method == "api" then
				-- ngx.say("api");
				local t = ngx.location.capture("/api");
				ngx.say(t.body);
			elseif ngx.var.method == "demo" then
				-- ngx.say("paymer");
				local t = ngx.location.capture("/demo",{method=ngx.HTTP_POST,body=""})
				local tt = "appid=ngx.var.appid&method=ngx.var.method&format=ngx.var.format&charset=ngx.var.charset&sign_type=ngx.var.sign_type&sign=ngx.var.sign&timestamp=ngx.var.timestamp&version=ngx.var.version&biz_content=ngx.var.biz_content"
				ngx.say(t.body);
				-- ngx.say(ngx.var.method .. ngx.var.appid);
			elseif ngx.var.method == "paymer" then
				-- ngx.say("paymer");
				local t = ngx.location.capture("/paymer");
				ngx.say(t.body);
			elseif ngx.var.method == "" then
				ngx.say("");
			elseif ngx.var.method == nul then
				ngx.say("nul");
			else
				ngx.say("other");
			end
			';
		#default_type 'text/plain';
		#echo "service: $service";

	}
}

 

 

转载于:https://my.oschina.net/lenglingx/blog/795232

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值