IIS 反代 Cloudreve 踩坑记录

什么是 Cloudreve

是一个网盘程序。具体介绍和帮助,请看 文档
为什么会有这个文章?虽然用户里有用 Windows 服务器的,但好像没看到用 IIS 的,所以我把踩到的坑说一下,也给自己留个档。目前本文已更新到官方文档页面。

前提

你已经按文档说明跑起来了 Cloudreve,即用你的浏览器访问 localhost:设置的端口 可以看到网盘界面。此处提前建议数据库用 MySQL,不要图省事用 SQLite,问题有点多。

你已经安装完了 IIS 并添加了一个网站,且是可以通过外网访问的;同时已经安装了 IIS 的 URL RewriteARR 模块。

启用 ARR

打开 IIS,进入主页的 Application Request Routing Cache,再进入右边的 Server Proxy Settings...,勾选最上面的 Enable proxy,同时取消勾选下面的 Reverse rewrite host in response headers。点击右边的 应用 保存更改。

如果不取消勾选反向重写主机头,会导致 Cloudreve API 无法返回正确的地址,导致无法预览图片视频等。

保留主机头

打开 IIS,进入主页最下面的 配置编辑器 (Configuration Editor),转到 system.webServer/proxy 节点,调整下面的 preserveHostHeaderTrue 后点击右边的 应用 保存更改即可。(微软爬嗷,只把一部分设置放到了 ARR 图形化界面里面算是什么操作??)

这个设置似乎对 Cloudreve 没什么影响,但是使用 IIS 反代 RSSHub 的时候是必须开启的。

配置反代规则

这是 web.config 文件的内容,将它放在目标网站根目录即可。此样例包括两个规则与一个限制:

  • HTTP to HTTPS redirect (强制 HTTPS,需要自行配置 SSL 后才可使用,不使用请删除该 rule)
  • Rerwite (反代)
  • requestLimits 中的 60000000 为传输文件大小限制,单位 byte,如果您要使用本地存储策略请更改大小为理论最大文件尺寸
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="HTTP to HTTPS redirect" stopProcessing="true">
                    <match url=".*" />
                    <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                        <add input="{HTTPS}" pattern="off" />
                    </conditions>
                    <action type="Redirect" url="https://{HTTP_HOST}/{R:0}" redirectType="Permanent" />
                </rule>
                <rule name="Rerwite" stopProcessing="true">
                    <match url=".*" />
                    <conditions logicalGrouping="MatchAny" trackAllCaptures="false">
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="http://localhost:5212/{R:0}" />
                </rule>
            </rules>
        </rewrite>
        <security>
            <requestFiltering allowDoubleEscaping="true">
                <requestLimits maxAllowedContentLength="60000000" />
            </requestFiltering>
        </security>
    </system.webServer>
</configuration>

其它问题

捐赠版 支付宝初始化实列失败
SQLite 转 MySQL
请参考:https://forum.cloudreve.org/d/1460
可以使用 PHPMyAdmin 进行操作,导入时可能会报错,请自行根据错误解决。同时还需要注意时区设置。
点赞
  1. 阿瑟东说道:

    辣鸡

    1. 小白-白说道:

      大佬有何高见?

    2. 初雪说道:

      深夜逛狗狗的blog,看到这条评论饿了quq。。。。。

      1. 千山说道:

        看看

  2. 写的真的不错,厉害

  3. 站元素主机说道:

    感谢分享 赞一个

  4. 狗狗加油! OωO

  5. wdxxg说道:

    写的真好,狗狗冲啊!!!

  6. b2b系统说道:

    感谢分享

  7. Crystal Sugar说道:

    狗子贴贴

  8. 四季说道:

    牛的

发表回复

电子邮件地址不会被公开。必填项已用 * 标注