NGINX反向代理在测试中的几个应用场景
NGINX反向代理
反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。
利用NGINX搭建反向代理服务器,对于测试环境可以有如下作用:
- 统一各应用的服务地址,根据上下文访问路径区分应用,应用环境切换时,只切换NGINX配置,业务访问的IP始终不变,也不用切换网络域名。
- 按照NGINX标准格式记录应用访问的日志(不记录应用自身程序调用日志),解决长流程交易了各应用时钟不一致对于日志分析的影响
- 通过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;
}
}
问题
- socket反向代理如何记录post报文的问题
- 如何利用nginx实现动态插码捕获网页端操作