描述: | 分布式创作和版本控制(WebDAV)功能 |
---|---|
状态: | 延期 |
模块标识符: | dav_module |
源文件: | mod_dav.c |
该模块为Apache 提供了1类和2类WebDAV(“基于Web的分布式创作和版本控制”)功能。HTTP协议的此扩展允许在远程Web服务器上创建,移动,复制和删除资源和集合。
要启用mod_dav
,请将以下内容添加到httpd.conf
文件中的容器中:
Dav On
这将启用由mod_dav_fs
模块实现的DAV文件系统提供程序。因此,必须使用LoadModule
指令将该模块编译到服务器中或在运行时加载
。
此外,必须httpd.conf
使用以下DavLockDB
指令在文件的全局部分中指定DAV锁数据库的位置:
DavLockDB /usr/local/apache2/var/DavLock
包含锁定数据库文件的目录必须由可写入User
和Group
在其下的Apache正在运行。
您可能希望<Limit>
在<Location>
指令内添加一个子句,以限制对启用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>
由于DAV访问方法允许远程客户端操作服务器上的文件,因此在启用之前,您必须格外小心以确保服务器安全mod_dav
。
服务器上启用DAV的任何位置都应通过身份验证进行保护。不建议使用HTTP基本身份验证。您至少应使用该mod_auth_digest
模块提供的HTTP摘要验证
。几乎所有的WebDAV客户端都支持此身份验证方法。一种替代方法是通过启用SSL的连接进行基本身份验证。
为了mod_dav
管理文件,它必须能够写入使用的目录和文件在其控制下的User
和
Group
其下的Apache正在运行。和创建的新文件也将归此
User
和所有Group
。因此,控制对该帐户的访问非常重要。DAV存储库被视为Apache专用;不允许修改Apache外部的文件(例如,使用FTP或文件系统级工具)。
mod_dav
可能会遭受各种拒绝服务攻击。该LimitXMLRequestBody
指令可用于限制在解析大型DAV请求时消耗的内存量。该DavDepthInfinity
指令可用于防止PROPFIND
非常大的存储库上的请求占用大量内存。另一种可能的拒绝服务攻击涉及客户端简单地用许多大文件填充所有可用磁盘空间。在Apache中,没有直接的方法可以阻止这种情况,因此您应避免将DAV访问权限授予不受信任的用户。
一种常见的要求是使用它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客户端一起使用以对其进行操作。
描述: | 启用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,就无法为子位置禁用DAV。有关完整的配置示例,请参见上面的部分。
描述: | 允许PROPFIND,深度:无限请求 |
---|---|
句法: | DavDepthInfinity on|off |
默认: | DavDepthInfinity off |
内容: | 服务器配置,虚拟主机,目录 |
状态: | 延期 |
模块: | mod_dav |
使用DavDepthInfinity
伪指令可处理PROPFIND
包含标头“ Depth:Infinity” 的请求。由于这种类型的请求可能构成拒绝服务攻击,因此默认情况下是不允许的。
描述: | 服务器在DAV资源上保持锁定的最短时间 |
---|---|
句法: | DavMinTimeout seconds |
默认: | DavMinTimeout 0 |
内容: | 服务器配置,虚拟主机,目录 |
状态: | 延期 |
模块: | mod_dav |
当客户端请求DAV资源锁定时,它也可以指定服务器自动删除该锁定的时间。该值只是一个请求,服务器可以忽略它或将任意值通知客户端。
使用DavMinTimeout
指令以秒为单位指定返回客户端的最小锁定超时。默认情况下,Microsoft Web Folders的超时时间为120秒。在
DavMinTimeout
可以覆盖此为更高的值(例如600秒),以减少客户端失去锁定由于网络延迟的机会。
<Location "/MSWord"> DavMinTimeout 600 </Location>