Nginx proxy_store的使用

本文介绍了如何利用Nginx的proxy_store功能来镜像一个WEB后台管理系统,包括静态文件和接口请求数据的缓存。首先获取系统认证凭证,然后配置Nginx,设置proxy_store开启缓存,并处理POST请求。通过这种方式,可以实现对目标服务器的静态资源和接口数据的本地存储,便于快速响应后续相同请求。
摘要由CSDN通过智能技术生成

Nginx 的 proxy_store 缓存方式可以把目标服务器的响应信息永久的缓存在本地磁盘中,其目录结构和请求URL结构一样。下次相同的请求就可以直接读取本地磁盘文件进行响应了。

现在有一个需求:需要尽可能的镜像一个WEB 后台管理系统(参考别人的系统设计_),也就是要把这个系统的静态文件(html/js/css…)和接口请求数据都保存在本地。如果是单个网页倒也简单,直接浏览器右键 另存就可以搞定,要另存整个系统的话是比较麻烦的,刚好Nginx的 proxy_store可以完成。

Nginx 配置如下:

    server {
    	listen 		80;
        location =/ {
        	# 用户直接通过域名或者IP访问是直接重定向到系统首页
            return 302 $scheme://$host/index;
        }
    	location / {
    		# 这里面处理所有请求
            if (!-e $request_filename) {
            	# 该请求第一次访问,需要访问真实的目标服务器。也就是要镜像的服务器
                proxy_pass https://admin.xxx.com;
            } 
            root F:\data;
            expires 3d;
            # 开启proxy_store,
            proxy_store on;
            proxy_temp_path F:/data/cache;
            # 这里是为了防止目标服务器对响应信息进行gzip压缩
            proxy_set_header Accept-Encoding '';
            # 让目标服务器以为该请求是通过它的域名进行访问的,不然他可能会把请求重定向会目标服务器
            proxy_set_header Host 'admin.xxx.com';
 			# 取消响应的Content-Type,不然访问镜像的时候会出现文件下载的情况
            default_type	"";
            
        }

        error_page  405 = @405;

        location @405 {
            # 因为proxy_store不支持POST请求,通过把POST转GET完成正常响应
            return 302 $scheme://$host$request_uri;
        }
    }

第一步需要拿到管理系统的一个账号密码,先登录他的系统拿到认证凭证(也就是jsessionId);然后访问我自己的nginx服务,先随便访问一个不存在的路径,通过浏览器控制台将拿到的jsessionId写入cookie.然后就输入正常路径就可以正常访问系统了,这个时候只需要疯狂点击系统的每个功能就行啦。
搞定 杀国!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值