動態網站離線緩存方案
阿新 • • 發佈:2019-03-01
動態 cal map 獲取 數據 zone tro 二級 ces
背景:
公司的一套系統,由前端、界面、服務層、大數據開發平架等多層組成,每一層被劃分為多個模塊,每個模塊會依賴若幹組建。由於公司的這套系統是部署在內網環境中的,現在需要拿出去給客戶演示,用一個筆記本裝這麽多個模塊有點不現實。因此,我們提出通過緩存前端請求的方式,屏蔽對後端的依賴,通過錄制對系統的操作緩存後端請求,達到仿真的效果。
解決思路:
利用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; } }
動態網站離線緩存方案