在实际项目中,我们的文件存储是一个必不可少的环节,本博主了解到现在的存储方案有
- 购买纯系统的云服务器,自己安装个mino,再使用nginx代理给web使用
- 购买OSS服务,现在有云厂商都有提供,储存价格也挺便宜的,只是访问流量也要收费
- 自建服务器,拉个专线(这个需要有公网IP)
本次案例主要介绍的是云服务器+nas结合方案,因为云端储存费用过高,对于一些冷数据,没必要放到云服务器
拓扑结构如下
经常性访问的热数据就放到云服务器中,访问次数少的就放到nas中
在这里会出现在一个问题 ,当数据从热数据转到冷数据时,访问地址会发生变化
访问的地址会从
http://abe23.com/v1/myresouce/1.jpg ----> http://abe23.com:9060/v1/myresouce/1.jpg
在这里介绍一种办法,访问地址不变,可以自动更换地址
使用ngix代理,当出现404状态码时就把访问转到下一个代理地址
例如
第一种情况
访问 http://abe23.com/v1/myresouce/1.jpg
- 在云服务器中有就直接返回
第二种情况
访问 http://abe23.com/v1/myresouce/1.jpg
云服务器中没有,把代理转到frp穿透的地址 http://abe23.com:9060/v1/myresouce/1.jpg
下面给出配置
frp 代理 详细配置可以查看我之前的文章
nginx 配置
server {listen 80;server_name ****; #允许跨域请求的域,* 代表所有add_header 'Access-Control-Allow-Origin' *;#允许请求的headeradd_header 'Access-Control-Allow-Headers' *;#允许带上cookie请求add_header 'Access-Control-Allow-Credentials' 'true';#允许请求的方法,比如 GET,POST,PUT,DELETEadd_header 'Access-Control-Allow-Methods' *; location /v1/myresouce/ {# 访问云服务的文件proxy_pass http://127.0.0.1:9000/bridgefile/;proxy_intercept_errors on;# 没有访问naserror_page 404 = /v2/myresouce$request_uri;}location /v2/myresouce/v1/myresouce/ {proxy_pass http://127.0.0.1:9062/; } location = /50x.html {root html;}}server {listen 9062;server_name 127.0.0.1; location / {# 第1台nas的web访问proxy_pass http://127.0.0.1:9060/; proxy_intercept_errors on;# 当第一台访问没有时,转到第二台nas访问error_page 404 = /v2/myresouce$request_uri;}location /v2/myresouce/ {# 第2台nas的web访问地proxy_pass http://127.0.0.1:9061/; } }