Nginx mock配置示例

本文记录了借助Nginx高并发能力,实现接口mock并发压测。Nginx conf压测配置如下:

worker_processes  4;
error_log  logs/error.log  info;
pid        logs/nginx.pid;
events {
    worker_connections  65535;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    log_format  main  '$remote_addr|$remote_user|[$time_local]|"$request"'
                      '|$status|$request_time|$body_bytes_sent|"$http_referer"'
                      '|"$http_user_agent"|"$http_x_forwarded_for"|$upstream_response_time|$upstream_status';
    access_log  logs/access.log  main;
    server_tokens   off;
    sendfile        on;
    tcp_nopush      on;
    tcp_nodelay     on;
    keepalive_timeout  60;
    proxy_buffering off;
    client_max_body_size 1024m;
    client_header_buffer_size 500m;
    large_client_header_buffers 4 4m;
    underscores_in_headers on;
    gzip on;

    server {
        listen       80;
		server_name  localhost;
		lua_need_request_body on;
		error_page   500 502 503 504  /50x.html;

        location = /stats {
            stub_status     on;
            access_log      off;
            allow           100.0.0.0/8;
            allow           10.0.0.0/8;
            deny            all;
         }
        location = /nstats {
            check_status;
            access_log      off;
            allow           100.0.0.0/8;
            allow           10.0.0.0/8;
            deny            all;
        }
		location = /50x.html {
			root   /app/openresty/nginx/html;
			
		}
		 location / {
			root   /app/openresty/nginx/html;
			index  index.html index.htm;
		}
		location /outbound/sendback {
		default_type text/xml;
        content_by_lua_block {
			local body_data = ngx.req.get_post_args();
			local logistics_interface = body_data["logistics_interface"]
			if string.find(logistics_interface,"UPLOAD") then
				local TransactionId = {}
				local SaleOrdersTemp = '';
				for match in logistics_interface:gmatch('<TransactionId>[^<]+</TransactionId>') do
				 --ngx.log(ngx.INFO, " match :",match)
				 SaleOrdersTemp = SaleOrdersTemp..'<SaleOrder>'..match..'<Result>1</Result><Note></Note></SaleOrder>'
				 table.insert(TransactionId,match)
				end
				local response = '<Response service="UPLOAD"  lang="zh-CN"><Head>OK</Head><Body><UploadSaleOrderResponse><AcceptedTransactions>'..#TransactionId..'</AcceptedTransactions><RejectedTransactions>0</RejectedTransactions><Message></Message><SaleOrders>'..SaleOrdersTemp..'</SaleOrders></UploadSaleOrderResponse></Body></Response>';
				--ngx.log(ngx.INFO, " responsez :",response)
				ngx.say(response)
				--ngx.log(ngx.INFO, " responsez :",response)
			end
		}
    }

		location /msc/waybillNo/genwaybills {
		default_type application/json;
        content_by_lua_block {
		local cjson = require("cjson")
			local body_data = ngx.req.get_body_data();
			local json_body_data = cjson.decode(body_data);
			for key, value in pairs(json_body_data) do 
				if key == "waybillNo" then
					local postBodyWaybillNo = value;
					local response = '{\"ret\":\"0\",\"msg\":\"SUCCESS\",\"data\":{\"waybillNo\":\"postBodyWaybillNo\"}}';
					local responsez = string.gsub(response,"postBodyWaybillNo",postBodyWaybillNo)
					ngx.say(responsez)
				end
			end
			}
    }
	
    }
	
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值