什么是 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>

其它问题

捐赠版 支付宝初始化实列失败

请参考:https://github.com/cloudreve/Cloudreve/issues/496

SQLite 转 MySQL

请参考:https://forum.cloudreve.org/d/1460

可以使用 PHPMyAdmin 进行操作,导入时可能会报错,请自行根据错误解决。同时还需要注意时区设置。

发表回复

后才能评论