<-
Apache > HTTP 服务器 > 文档 > 版本 2.4 > 模块

Apache 模块 mod_dav

可用语言:  en  |  fr  |  ja  |  ko 

描述分布式创作和版本控制 (WebDAV) 功能
状态扩展
模块标识符dav_module
源文件mod_dav.c

摘要

此模块为 Apache 提供了 1 类和 2 类 WebDAV(“基于 Web 的分布式创作和版本控制”)功能。此 HTTP 协议扩展允许在远程 Web 服务器上创建、移动、复制和删除资源和集合。

Support Apache!

主题

指令

错误修复清单

另请参阅

top

启用 WebDAV

要启用 mod_dav,请将以下内容添加到 httpd.conf 文件中的容器中

Dav On

这将启用 DAV 文件系统提供程序,该提供程序由 mod_dav_fs 模块实现。因此,该模块必须编译到服务器中或使用 LoadModule 指令在运行时加载。

此外,必须在 httpd.conf 文件的全局部分使用 DavLockDB 指令指定 DAV 锁数据库的位置

DavLockDB /usr/local/apache2/var/DavLock

包含锁数据库文件的目录必须可由运行 Apache 的 UserGroup 写入。

您可能希望在 <Location> 指令内添加 <Limit> 子句以限制对启用 DAV 的位置的访问。如果您想设置 DAV 客户端可以在一次请求中发送的最大字节数,则必须使用 LimitXMLRequestBody 指令。“正常” LimitRequestBody 指令对 DAV 请求无效。

完整示例

DavLockDB "/usr/local/apache2/var/DavLock"

<Directory "/usr/local/apache2/htdocs/foo">
    Require all granted
    Dav On

    AuthType Basic
    AuthName DAV
    AuthUserFile "user.passwd"

    <LimitExcept GET POST OPTIONS>
        Require user admin
    </LimitExcept>
</Directory>
top

安全问题

由于 DAV 访问方法允许远程客户端操作服务器上的文件,因此在启用 mod_dav 之前,您必须特别注意确保服务器安全。

服务器上启用 DAV 的任何位置都应受身份验证保护。不建议使用 HTTP 基本身份验证。您应该至少使用 HTTP 摘要身份验证,该身份验证由 mod_auth_digest 模块提供。几乎所有 WebDAV 客户端都支持此身份验证方法。另一种方法是在启用 SSL 的连接上使用基本身份验证。

为了使 mod_dav 能够管理文件,它必须能够使用运行 Apache 的 UserGroup 写入其控制下的目录和文件。创建的新文件也将由此 UserGroup 拥有。因此,控制对该帐户的访问非常重要。DAV 存储库被认为是 Apache 的私有存储库;不允许在 Apache 之外修改文件(例如使用 FTP 或文件系统级工具)。

mod_dav 可能受到各种拒绝服务攻击。可以使用 LimitXMLRequestBody 指令来限制解析大型 DAV 请求时消耗的内存量。可以使用 DavDepthInfinity 指令来防止对非常大的存储库进行 PROPFIND 请求消耗大量内存。另一种可能的拒绝服务攻击涉及客户端只是用许多大文件填满所有可用磁盘空间。在 Apache 中没有直接的方法来防止这种情况,因此您应该避免向不受信任的用户授予 DAV 访问权限。

top

复杂配置

一个常见的请求是使用 mod_dav 来操作动态文件(PHP 脚本、CGI 脚本等)。这很困难,因为 GET 请求将始终运行脚本,而不是下载其内容。避免这种情况的一种方法是将两个不同的 URL 映射到内容,其中一个将运行脚本,另一个将允许使用 DAV 下载和操作它。

Alias "/phparea" "/home/gstein/php_files"
Alias "/php-source" "/home/gstein/php_files"
<Location "/php-source">
    Dav On
    ForceType text/plain
</Location>

使用此设置,http://example.com/phparea 可用于访问 PHP 脚本的输出,而 http://example.com/php-source 可用于使用 DAV 客户端操作它们。

top

Dav 指令

描述启用 WebDAV HTTP 方法
语法Dav On|Off|provider-name
默认值Dav Off
上下文目录
状态扩展
模块mod_dav

使用 Dav 指令为给定的容器启用 WebDAV HTTP 方法

<Location "/foo">
    Dav On
</Location>

On 实际上是默认提供程序 filesystem 的别名,该提供程序由 mod_dav_fs 模块提供。请注意,一旦您为某个位置启用了 DAV,就无法为子位置禁用它。有关完整配置示例,请查看上面的部分

在确保服务器安全之前,请勿启用 WebDAV。否则,每个人都将能够在您的系统上分发文件。
top

DavBasePath 指令

描述配置存储库根路径
语法DavBasePath root-path
默认值
上下文目录
状态扩展
模块mod_dav
兼容性在版本 2.4.58 及更高版本中可用

如果 DAV 存储库是使用正则表达式匹配配置的(例如 LocationMatch),那么 mod_dav 将无法仅从路径名中找到存储库的根目录。第三方提供程序(例如 Subversion 的 mod_dav_svn)可能无法在没有正确存储库根目录的情况下处理请求。

要允许提供程序在这样的配置中正常工作,必须使用 DavBasePath

<LocationMatch "^/repos/">
    Dav svn
    DavBasePath /repos
    SVNParentPath /var/svn
</LocationMatch>
top

DavDepthInfinity 指令

描述允许 PROPFIND,Depth: Infinity 请求
语法DavDepthInfinity on|off
默认值DavDepthInfinity off
上下文服务器配置、虚拟主机、目录
状态扩展
模块mod_dav

使用 DavDepthInfinity 指令允许处理包含标题“Depth: Infinity”的 PROPFIND 请求。由于此类请求可能构成拒绝服务攻击,因此默认情况下不允许它。

top

DavMinTimeout 指令

描述服务器在 DAV 资源上保持锁定的最短时间
语法DavMinTimeout seconds
默认值DavMinTimeout 0
上下文服务器配置、虚拟主机、目录
状态扩展
模块mod_dav

当客户端请求 DAV 资源锁时,它还可以指定服务器将自动删除锁的时间。此值只是一个请求,服务器可以忽略它或通知客户端任意值。

使用 DavMinTimeout 指令以秒为单位指定要返回给客户端的最小锁定超时时间。Microsoft Web Folders 默认超时时间为 120 秒;DavMinTimeout 可以将其覆盖为更高的值(例如 600 秒)以减少客户端由于网络延迟而丢失锁的可能性。

示例

<Location "/MSWord">
    DavMinTimeout 600
</Location>

可用语言:  en  |  fr  |  ja  |  ko 

top

评论

注意
这不是问答部分。此处放置的评论应指向有关改进文档或服务器的建议,如果它们被实施或被认为无效/偏离主题,则可能被我们的版主删除。有关如何管理 Apache HTTP 服务器的问题应发送到我们的 IRC 频道 #httpd(在 Libera.chat 上)或发送到我们的 邮件列表