作者:没有那么一个人_382 | 来源:互联网 | 2023-10-16 16:55
背景:公司的一套系统,由前端、界面、服务层、大数据开发平架等多层组成,每一层被划分为多个模块,每个模块会依赖若干组建。由于公司的这套系统是部署在内网环境中的,现在需要拿出去给客户演
背景:
公司的一套系统,由前端、界面、服务层、大数据开发平架等多层组成,每一层被划分为多个模块,每个模块会依赖若干组建。由于公司的这套系统是部署在内网环境中的,现在需要拿出去给客户演示,用一个笔记本装这么多个模块有点不现实。因此,我们提出通过缓存前端请求的方式,屏蔽对后端的依赖,通过录制对系统的操作缓存后端请求,达到仿真的效果。
解决思路:
利用Nginx的缓存功能,将所有请求都缓存到本地。演示时,只需启动Nginx即可重复操作已录制的动作。
worker_processes 1;
worker_rlimit_nofile 65535;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main ‘ $remote_user [$time_local] $http_x_Forwarded_for $remote_addr $request ‘
‘$http_x_forwarded_for ‘
‘$upstream_addr ‘
‘ups_resp_time: $upstream_response_time ‘
‘request_time: $request_time‘;
access_log logs/access.log main;
#error_log logs/error.log notice; #rewrite 日志会打印到error.log中,notice为最低日志级别
#rewrite_log on; #rewrite时,打印日志
sendfile on;
server_tokens off;
keepalive_timeout 120;
proxy_connect_timeout 2;
proxy_send_timeout 2;
proxy_read_timeout 4000;
proxy_buffer_size 2k;
gzip on;
proxy_set_header X-Real-Ip $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-for $proxy_add_x_forwarded_for;
#开启缓存,指定缓存路径、名称、大小
proxy_cache_path C:/develop/nginx-1.10.1/cache keys_zOne=one:100m max_size=10g inactive=365d;
upstream proxy_server {
server localhost:5555;
}
upstream AAA_server {
server 172.16.43.28:8080;
}
upstream BBB_server {
server 172.16.43.28:8082;
}
#一级代理服务, 处理特殊请求
server {
listen 80;
server_name localhost;
#解决时间戳的问题
if ($args ~ ^(.*)_=[0-9]+$) {
set $args $1;
}
if ($args ~ ^(.*)v=[0-9]+$) {
set $args $1;
}
#转给缓存代理服务
location / {
add_header Cache-Control no-cache;
proxy_pass http://proxy_server;
}
#替换获取到的后端IP
location ~* (getNginxInfo.action)$ {
return 200 ‘{"nginxPort":"80","_switch":"1","nginxIp":"localhost"}‘;
}
location ~* (/AAA/query/).*\.action {
proxy_pass http://proxy_server;
sub_filter 8080 80;
}
}
#二级代理服务,处理缓存
server {
listen 5555;
server_name localhost;
proxy_cache one;
proxy_cache_methods GET POST;
proxy_cache_key "$request_uri|$request_body";
proxy_cache_valid 1d;
proxy_ignore_headers Set-COOKIE Cache-Control X-Accel-Expires Expires;
add_header Nginx-Cache "$upstream_cache_status";
location / {
proxy_pass http://AAA_server;
}
location ~* (/BBB/api/v1/) {
proxy_pass http://BBB_server;
}
}
map $http_upgrade $connection_upgrade {
default upgrade;
‘‘ close;
}
}