云服务器与nas实现在冷热资源访问,nginx代理
在实际项目中,我们的文件存储是一个必不可少的环节,本博主了解到现在的存储方案有
- 购买纯系统的云服务器,自己安装个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' *;
#允许请求的header
add_header 'Access-Control-Allow-Headers' *;
#允许带上cookie请求
add_header 'Access-Control-Allow-Credentials' 'true';
#允许请求的方法,比如 GET,POST,PUT,DELETE
add_header 'Access-Control-Allow-Methods' *;
location /v1/myresouce/ {
# 访问云服务的文件
proxy_pass http://127.0.0.1:9000/bridgefile/;
proxy_intercept_errors on;
# 没有访问nas
error_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/;
}
}