0


如何安全访问oss资源?

如何安全访问oss资源?

一、前言

我们在公司项目或者个人项目中肯定会使用到oss来存储资源文件,oss的使用方便了我们在项目中存储和访问资源,但是无论是阿里云oss还是腾讯云oss都是需要按流量和访问量进行计费的,如果我们直接将oss的地址暴露在公网上,允许用户随意访问,可能会出现被恶意刷流量的情况,导致项目的费用变高,并且有可能被别人当作资源库进行使用(也就是我们常说的盗链)。
所以我们为了安全的使用oss资源,就必须将公网oss地址给隐藏起来,不让用户知晓原始的oss地址,只是在项目使用的时候通过代理去访问对应的资源,下面我就来简单介绍两种常见的代理访问方式:

二、使用nginx代理访问:

使用Nginx代理访问阿里云OSS(Object Storage Service)或腾讯云OSS,可以通过配置Nginx的location块来代理请求到OSS的HTTP/HTTPS端点。以下是一个参考的示例:

2.1安装和配置Nginx:

  • 首先确保你的服务器或者本地上已经安装了Nginx服务: 可以使用下面的命令查看是否安装了nginx:
ps -ef |grep nginx

在这里插入图片描述

  • 添加代理配置,在Nginx配置文件找到配置代理的server块,并在其中添加一个location块。添加以下内容:
server {
   listen 80;
   server_name your.domain.com;
   location /oss/ {
       # 设置OSS的访问URL
       proxy_pass https://your-oss-endpoint.oss-cn-region.aliyuncs.com/;
       # 如果OSS需要特定的HTTP头,可以在这里设置
       proxy_set_header Host $host;
       # 其他可能需要的代理设置...
       # 转发原始请求头到OSS(可选)
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header X-Forwarded-Proto $scheme;
       # 禁用缓存(可选)
       proxy_no_cache 1;
       proxy_cache_bypass 1;
   }
}

注意:your-oss-endpoint.oss-cn-region.aliyuncs.com需要替换为自己的OSS端点URL。

2.2安全性考虑:

为了访问的安全性,我们还可以做以下配置:

  • 在nginx上开启SSL/TLS,这样代理的请求将使用HTTPS协议。
  • 增加oss的ip访问限制,给nginx的服务器ip增加ip白名单,这样就可以保证只有nginx服务器才能访问到oss。

三、使用后端接口代理访问:

我们还可以通过后端接口代理访问oss,我这里以Node项目的Egg框架为例,新建一个访问oss图片的接口:
如果想使用下面的例子进行测试但是对egg框架不是很熟悉的,可以参考我之前的文章:https://blog.csdn.net/qq_43558959/article/details/139998844

3.1 接口编写

// 新增接口
router.get('/oss', controller.oss.index);// app/controller/oss.jsasyncindex(){const{ ctx }=this;const{ fileName }= ctx.validate({fileName:{type:'string'},});try{// 使用axios发起请求获取图片const axiosResponse =awaitaxios({url:`https://your-oss-endpoint.oss-cn-region.aliyuncs.com/${fileName}`,method:'get',responseType:'arraybuffer',});this.ctx.set({'Content-Type': axiosResponse.headers['content-type']||'image/webp','Content-Length': axiosResponse.headers['content-length'],});
      ctx.body = Buffer.from(axiosResponse.data,'binary');return;}catch(error){
      ctx.logger.error(error);}
    ctx.state =404;return;}

3.2 测试访问

通过访问接口:http://127.0.0.1:7001/oss?fileName=1000.webp
在这里插入图片描述

四、总结

上面分享的只是我在工作和学习中使用到的两种代理的方式,如果小伙伴有更好的方式,也可以在评论区讨论下,我们一起研究研究。

标签: node.js nginx

本文转载自: https://blog.csdn.net/qq_43558959/article/details/140617018
版权归原作者 航航在路上VIP 所有, 如有侵权,请联系我们删除。

“如何安全访问oss资源?”的评论:

还没有评论