NGINX反向代理在测试中的几个应用场景

Posted Yannan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NGINX反向代理在测试中的几个应用场景相关的知识,希望对你有一定的参考价值。

nginx反向代理

反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。

利用NGINX搭建反向代理服务器,对于测试环境可以有如下作用:

  1. 按照NGINX标准格式记录应用访问的日志(不记录应用自身程序调用日志),长流程应用如果在同一套NGINX中,则可以实现按照交易调用时间戳顺序记录日志,解决了各应用时钟不一致对于日志分析的影响

  2. 通过lua组件,可以实现对于GET,POST,REQUEST接口和BODY内容的标准化记录,解决了接口报文采集的问题,可以快速的实现对全量应用的接口报文捕获,同时也解决了原来通过正则表达式解析报文的效率问题。

实现方法

实现方法非常简单,只需要安装NGINX和LUA组件,然后配置成HTTP和SOCKET反向代理服务器,指向应用的应用服务或接口服务。

配置文件

nginx.conf

worker_processes  1; 
events { 
    worker_connections  1024; 
} 

http { 
    include       mime.types; 
    default_type  application/octet-stream; 
    log_format  dm  '[$time_local] - $remote_addr - $http_referer - $request - $request_body'; 
    access_log logs/post.log dm; 
    server { 
        listen       8080; 
        server_name  localhost; 
        location /aaa { 
            lua_need_request_body on; 
            content_by_lua 'local s = ngx.var.request_body'; 
            proxy_pass   http://2.2.2.2:9081/aaa;   
        } 
        location /bbb { 
            lua_need_request_body on; 
            content_by_lua 'local s = ngx.var.request_body'; 
            proxy_pass   http://3.3.3.3:8080/bbb; 
        } 

    } 

} 
include /usr/local/nginx/socket/socket.conf; 

socket.conf

error_log logs/socket.log debug; 
stream { 
upstream bss_num_socket { 
        hash $remote_addr consistent; 
        server 1.1.1.1:9998 weight=5 max_fails=3 fail_timeout=30s; 
        } 
server { 
       listen 9998; 
        proxy_connect_timeout 1s; 
        proxy_timeout 3s; 
       proxy_pass bss_num_socket; 
        } 
}


以上是关于NGINX反向代理在测试中的几个应用场景的主要内容,如果未能解决你的问题,请参考以下文章

nginx应用 | 反向代理,统一鉴权,目录重定向

详解Nginx主要应用场景/反向代理/负载均衡/动静分离/HTTP服务器

Nginx应⽤场景之反向代理

Nginx应?场景之反向代理

Nginx 11入门--应用场景

Nginx 主要应用场景