利用Onedrive空间搭建自己的5TB存储图床/网盘
前言
在日常的网站部署中,我们常常需要引用到许多图片,而如果由于各种原因,我们通常希望减少从我们自己的服务器中消耗这部分流量,因此一个合适的图床便显得尤为重要,可以帮助我们在不影响网站运行的同时减少硬盘空间和流量的消耗,达到节省资源的目的。而Ondrive无疑为人们提供了一个很棒的平台,如果你是e5用户/教育用户或者付费的个人用户,那么普遍都拥有较大的存储空间如E5开发者账户就可以拥有25个容量达到5t的帐号,那么利用这个空间不管是用于搭建自己的网盘亦或者图床都是极为便利的。
实现效果:映射你Onedrive的特定文件夹内容,并允许访客在这一文件夹下上传、下载、获取图片直链或引用方式,并为了保护隐私防止其访问到你的其他页面。
前提
有一台个人服务器(或使用公共免费虚拟空间)
有读写权限的世纪互联版Onedrive或Office365附赠的Onedrive
有个人域名(非必须)
最终效果图


演示站:https://img.xkdz.cc/
搭建好处:
- 
- 映射自己Onedrive内容
 
- 
- 图片提供网络直链(图床功能)
 
- 
- 避免消耗服务器流量和空间(直接映射Onedrive)
 
环境准备
有个人服务器用户安装PHP(你也可以使用一些PHP的Serverless服务)
【推荐】为了 方便操作,我这边使用宝塔面板:
宝塔官网:https://www.bt.cn/?invite_code=MV9rd3Jmbno=
服务器安装宝塔后,安装PHP(建议5.6~7.4版本)、Nginx(版本随意):

之后,选择网站–添加网站:

之后打开这个网站的目录,下载这个Oneindex项目master到本目录:

源码下载
下载源码
把文件上传到服务器域名目录下解压,之后设置权限,给www用户全部读写权限,进入网站:

之后,点击下一步以后,出现界面:

我们的环境准备就完成了。
应用ID和机密
可以从这张图里看到:

我们需要三个参数:
- 
client_secret:应用机密,即:客户端密码。 
- 
client_id:应用ID,即:应用代号。 
- 
URL:这个URL用于创建应用时,授权验证。 创建应用如果你是Office365送的OneDrive,也就是Onedrive国际版本,到Microsoft Azure App registrations内创建。 
 如果你是世纪互联版本OneDrive,到Microsoft Azure.cn App registrations内创建。
  
 之后,我们填入需要的参数:
  
- 
名称:最好为纯英文。 
- 
受支持的帐户类型:如图:选择任何组织目录的账号和个人 
- 
重定向 URI:这里填入作者Mintimate建立的API:https://neindex.tmxkdz.com/ 
 之后,点击注册即可。
获取应用ID
应用ID很好获取,注册了后,即可获得:

设置权限
在获取应用机密前,我们需要设置权限,点击:API权限-Microsoft Graph:

依此勾选:
- offline_access
- Files.Read
- Files.Read.All
 最后更新权限即可:
  
  
  
 到此,设置权限结束,接下来,我们可以去获取机密了。获取机密最后,我们可以获取应用机密(密钥)了,点击:证书和密码-新建客户端密码: 
  
  
 按提示设置即可得到:
  初始化OneIndex上一步,我们已经得到了应用ID和机密,现在我们填入即可: 
  
 之后,点击下一步-绑定账号,即可完成绑定:
  
  
  
 你可以选择进入后台,也可以选择直接浏览效果页面。(默认为你OneDrive的根目录)搭建图床首先,我们需要初始化网盘,进入后台后点击页面缓存,选择重建所有缓存: 
  
 之后按顺序点击图床设置(OneImages) ,勾选作为网站首页以及允许游客上传图片:
  
 至此我们就完成了一个完整的图床搭建过程,只需要绑定上我们自己的域名,就可以愉快的使用了。(非必须)
去掉地址栏中的/?/ (需配合伪静态使用!!)如何配置
 if (!-f $request_filename){
            set $rule_0 1$rule_0;
        }
        if (!-d $request_filename){
            set $rule_0 2$rule_0;
        }
        if ($rule_0 = "21"){
            rewrite ^/(.*) /?/$1 last;
        }复制上面的代码添加到网站配置中
 
                    