通过内网访问Cloudreve管理OneDrive文件并通过Nginx反向代理仅代理外链的形式进行文件分享

请注意:
①本文中提到的OneDrive为Microsoft365开发人员订阅中的OneDrive,关于如何获取订阅的教程不属于本文主题,请自行上网搜寻。
②外链分享的下载速度受到地区、运营商、DNS的影响,可以自行搭建OneDrive反向代理缓解。

Snipaste_2024-02-06_08-43Microsoft365开发人员订阅-32.webp
本图为该架构大致运作图

环境简介

本文使用WindowsServer、Nginx、宝塔面板
Linux环境下同理,宝塔面板不是必需安装项

Cloudreve部署

下载Cloudreve并启动,Windows部署只需要双击exe文件即可,详情见官网教程
Cloudreve官网 Cloudreve Github

Cloudreve部署完成后再去管理面板按里面的教程配置 存储策略 将OneDrive配置进来,记得配置的时候打开 允许获取外链 ,并让当前登陆的账号使用刚刚配置的 OneDrive存储策略 ,这样你往Cloudreve传文件才是传到你的OneDrive里面

Nginx反向代理

在这阶段 假设 服务器内网IP为10.0.0.1,外网站点为yourname.com
由于只需要反代外链分享的路径,Cloudreve外链的路径是 /f/*

在宝塔中配置站点yourname.com的 反向代理
添加一个反向代理 目标URL 填写 **http://127.0.0.1:5212/f **,发送域名 默认 $host ,再打开 高级功能 选项,填写 代理路径 比如 /onedrive ,都填写完成后即可提交。
提交后先单击缓存以关闭缓存再点击该反向代理的配置文件修改与缓存相关的配置,不使用宝塔面板的也可参考该配置修改

location /onedrive
{   #↓本处有修改,从12h修改为1h,因为OneDrive单次生成的外链有效期为1小时
    expires 1h;
    #if ($request_uri ~* "(php|jsp|cgi|asp|aspx)")
    #{
    #     expires 0;
    #}   #<---这四行可注释可不注释,用不上
    proxy_pass http://127.0.0.1:5212/f;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header REMOTE-HOST $remote_addr;

    add_header X-Cache $upstream_cache_status;

    proxy_set_header Accept-Encoding "";
	
    sub_filter_once off;

    proxy_intercept_errors on;   #<---从这开始到23行是做自定义错误页的
    error_page 403 /403.html;   #宝塔创建的配置文件没有这四行
    error_page 404 /404.html;   #如果你没有需求可以不添加
    error_page 502 /502.html;

    #proxy_cache cache_one;   #<---从这到27行可注释可不注释,不影响
    #proxy_cache_key $host$uri$is_args$args;
    #proxy_cache_valid 200 304 301 302 12h;
}

完成

至此你就可以通过内网访问Cloudreve上传文件并获取外链再通过外网访问指定地址的形式下载到OneDrive里面的文件

流程

①首先往你的Cloudreve上传文件,再右键文件 获取外链,你会得到类似于这样一串的地址http://127.0.0.1:5212/f/Hasm/file.exe
只需保留 /f 后面的部分比如这里的 /Hasm/file.exe
②在浏览器里输入 yourname.com/onedrive 将 /Hasm/file.exe 添加到 /onedrive 的后面,例如 yourname.com/onedrive/Hasm/file.exe ,访问即可开始下载文件。

请注意:此处的yourname.com仅为假设演示

一名既不Kirakira也不让人Dokidoki的普通人~