WebDav 无法连接:405 方法不允许

WebDav 无法连接:405 方法不允许

我有一台运行 Ubuntu 16.04 的小型服务器。它成功通过 https 提供网页服务。

我也想在 Apache 上通过 https 设置 webdav。我很难找到一个明确设置它的教程,最后只能使用来自几个不同教程的信息,所以很可能我在某个时候做了一些自相矛盾的事情,但我不知道那是什么。

default-ssl-conf 如下所示,删除了所有模板注释。除了添加 DavLockDB 指令外,我没有更改 Alias 命令之前的任何设置。

DavLockDB /var/www/DavLock/davLock
<IfModule mod_ssl.c>
    <VirtualHost _default_:443>
            ServerAdmin me@me

            DocumentRoot /var/www/html

            ErrorLog ${APACHE_LOG_DIR}/error.log
            CustomLog ${APACHE_LOG_DIR}/access.log combined

            SSLEngine on

            SSLCertificateFile      /etc/ssl/certs/ssl-cert-snakeoil.pem
            SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key

            <FilesMatch "\.(cgi|shtml|phtml|php)$">
                            SSLOptions +StdEnvVars
            </FilesMatch>
            <Directory /usr/lib/cgi-bin>
                            SSLOptions +StdEnvVars
            </Directory>

            # My Webdav config starts here
            Alias "/webdav" "/var/www/webdav"

            <Directory /var/www/webdav>
                DAV on
                DirectoryIndex disabled
                AuthType Digest
                AuthName "webdav"
                AuthUserFile /etc/apache2/users.password
                Require valid-user
            </Directory>

    </VirtualHost>

通过 cadaver 连接到 localhost 或完全限定名称都会得到相同的响应:

jbhelfrich@arm:/etc/apache2/sites-available$ cadaver https://localhost/webdav
Could not access /webdav/ (not WebDAV-enabled?):
405 Method Not Allowed
Connection to `localhost' closed.

我也在不使用 /webdav 的情况下尝试过,得到了相同的基本响应。/var/www/DavLock 和 /var/www/webdav 都归 www-data 所有

/var/logs/apache2/access.log 显示

::1 - - [10/Aug/2016:20:07:44 +0000] "OPTIONS / HTTP/1.1" 200 229 "-" "cadaver/0.23.3 neon/0.30.1"
::1 - - [10/Aug/2016:20:07:44 +0000] "PROPFIND / HTTP/1.1" 405 501 "-" "cadaver/0.23.3 neon/0.30.1"

error.log 未显示任何相关内容,而 other_vhosts_access.log 为空。

alias、dav_fs、dav 和 dav_lock 模块均已启用。

有人看到我遗漏了什么吗?

答案1

问题是 Lets Encrypt 设置创建了一个我没有注意到的站点特定 ssl 配置。将上述代码复制到该文件中,它运行正常。

相关内容